ホームページ データベース 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 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

Go言語のchanチャンネルとは何ですか Go言語のchanチャンネルとは何ですか Jan 10, 2023 pm 06:55 PM

Go 言語では、チャネル (chan) はゴルーチン間の通信パイプであり、ゴルーチンが別のゴルーチンと通信するための媒体です。チャネルは、ある 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) があります。ルールには値の送信が含まれます (

Select Channels Go の実装 golang による同時プログラミング効率の向上 Select Channels Go の実装 golang による同時プログラミング効率の向上 Sep 27, 2023 pm 02:58 PM

SelectChannelsGo の実装による Golang による同時プログラミングの効率向上 はじめに: 今日のソフトウェア開発分野では、効率的な同時プログラミングが非常に重要です。同時プログラミングにより、最新のプロセッサのマルチコア機能を最大限に活用し、プログラムの実行効率とパフォーマンスを向上させることができます。 Golang は同時実行を念頭に設計されたプログラミング言語であり、その組み込みのゴルーチンとチャネル メカニズムにより、効率的な同時プログラミングを簡単に実現できます。この記事では Golang を使用して、

golang関数の同時実行制御とチャネルの関係 golang関数の同時実行制御とチャネルの関係 Apr 25, 2024 am 08:39 AM

Go 言語の場合: 関数の同時実行制御により、キーワード go または goroutine を使用して、同時に実行される関数を作成できます。チャネルは、同時実行機能間で値を渡すために使用されるバッファー キューであり、同期と通信を提供します。使えるようになる

golangでチャンネルを閉じる方法 golangでチャンネルを閉じる方法 Jan 11, 2023 am 11:12 AM

golang では、close() 関数を使用してチャネルを閉じることができます。構文は「close(msg_chan)」です。チャネル (chan) はシステム リソースであるため、chan を使用する必要がない場合は、組み込み関数 close を使用して手動でパイプを閉じる必要があります。注: 閉じたパイプにデータを送信すると、プログラムがパニックになります。

golang 関数のチャネルはどのように実装されますか? golang 関数のチャネルはどのように実装されますか? Jun 03, 2024 am 10:45 AM

Go 言語では、チャネルの内部構造には、要素タイプ、バッファー ポインター、ミューテックス ロック、送信キューと受信キューが含まれます。送受信メカニズムには、データを送受信するために goroutine を起動することが含まれます。チャネルはバッファありとバッファなしに分けられます。バッファーされたチャネルでは、ゴルーチンはレシーバーなしでデータを送信できますが、バッファーなしのチャネルでは送信前にレシーバーが必要です。

See all articles