首頁 資料庫 mysql教程 关于Amoeba读取longblob字段的问题_MySQL

关于Amoeba读取longblob字段的问题_MySQL

Jun 01, 2016 pm 01:46 PM
頻道

bitsCN.com

最近有一个应用使用Amoeba从几个库中读取MySQL中含有longblob字段的表,老是报Session was killed。

经查是Amoeba中可读通道的缓存大小引起的。原来在com.meidusa.amoeba.net.io.PacketInputStream类中,有一个属性maxPacketSize,限制了可读通道的缓存大小,如果当前读取的记录的长度大于maxPacketSize,就会报错。所以我们必须把它调大点。

Java代码 
/** 最大容量 */ 
protected static final int MAX_BUFFER_CAPACITY = 1024 * 1024 * 2; 
private int maxPacketSize = MAX_BUFFER_CAPACITY; 
 
 
public int getMaxPacketSize() { 
    return maxPacketSize; 

 
public void setMaxPacketSize(int maxPacketSize) { 
    this.maxPacketSize = maxPacketSize; 

maxPacketSize默认是2MB,但是发现setMaxPacketSize方法没有在其它地方有调用,应该是不可配置的,因此我直接修改了MAX_BUFFER_CAPACITY,重新打包扔上去就没问题了。


另外,当maxPacketSize大小不足时,用SQLYog连代理时的时候,发现一个有趣的现象。假如我有一表,各字段长度如下:
field1 | field2
1M     | 3M

如果我先执行:SELECT field2 FROM tab
这时出错:Lost connection to MySQL server during query
再执行:SELECT field1 FROM tab
SQLYog就没有响应了,然后amoeba抛OOM异常,屡试不爽。查DUMP文件后,发现AuthingableConnectionManager 和 Log4j的DailyRollingFileAppender塞满了内存。

bitsCN.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

Go語言中chan通道是什麼 Go語言中chan通道是什麼 Jan 10, 2023 pm 06:55 PM

在Go語言中,通道(chan)是goroutine之間溝通的管道,是goroutine與另一個goroutine溝通的媒介。通道是一種技術,它允許一個goroutine將資料發送到另一個goroutine;預設情況下,通道是雙向的,這意味著goroutine可以透過同一通道發送或接收資料。

golang函數通道作為參數傳遞 golang函數通道作為參數傳遞 Apr 22, 2024 pm 06:36 PM

在Go中,我們可以使用chan關鍵字將函數通道作為函數參數傳遞,從而輕鬆地在函數之間共享和傳遞資料。具體操作步驟如下:建立一個通道來傳遞特定類型的資料。在函數中使用chan關鍵字和通道名稱將通道作為參數傳遞。使用單向通道

Go函數效能最佳化:管道與通道的使用技巧 Go函數效能最佳化:管道與通道的使用技巧 May 03, 2024 am 09:33 AM

管道和通道是Go中實現並行性與並發性的重要工具。它們可以透過以下幾種方式優化Go函數效能:管道:實現並行I/O,提高吞吐量。通道:緩衝管道,管理運算密集型任務的並發執行。選擇性接收:從多個通道接收數據,提高效率。

Golang函數並發程式設計中通道的類型和規則 Golang函數並發程式設計中通道的類型和規則 Apr 18, 2024 am 08:57 AM

通道是Go語言中用於在並發函數間安全傳遞資料的通訊機制,提供的資料競爭保護避免直接存取共享記憶體。通道類型包括無緩衝通道(chanT)和緩衝通道(chanT,int)。規則包括發送值(

透過golang實現Select Channels Go並發式程式設計的效率提升 透過golang實現Select Channels Go並發式程式設計的效率提升 Sep 27, 2023 pm 02:58 PM

透過Golang實現SelectChannelsGo並發式程式設計的效率提升引言:在當今的軟體開發領域,高效的並發程式設計是至關重要的。並發程式設計可以最大程度地利用現代處理器的多核心能力,提高程式的執行效率和效能。 Golang是一種以並發性為重點設計的程式語言,透過其內建的goroutine和channel機制,可以輕鬆實現高效的並發程式設計。本文將透過Golang中的

golang怎麼將通道關閉 golang怎麼將通道關閉 Jan 11, 2023 am 11:12 AM

在golang中,可以使用close()函數來關閉通道,語法「close(msg_chan)」。通道(chan)是一種系統資源,因此在不需要使用chan 時,需要使用內建函數close來手動關閉管道。注意如果向一個已經關閉的管道發送數據,那麼程式會pannic。

golang函數並發控制與通道之間的關係 golang函數並發控制與通道之間的關係 Apr 25, 2024 am 08:39 AM

在Go語言中:函數並發控制允許使用關鍵字go或goroutine建立並發執行的函數。通道是一個緩衝隊列,用於在並發函數之間傳遞值,提供同步和通訊。可使用

golang函數中的通道是如何實現的? golang函數中的通道是如何實現的? Jun 03, 2024 am 10:45 AM

Go語言中,通道的內部結構包含元素類型、緩衝區指標、互斥鎖、傳送和接收佇列。收發機制涉及喚醒goroutine來發送或接收資料。通道分為緩衝和無緩衝兩種。緩衝通道允許goroutine在沒有接收者的情況下發送數據,而無緩衝通道則需要發送前有接收者。

See all articles