关于Amoeba读取longblob字段的问题_MySQL
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塞满了内存。

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas





Dalam bahasa Go, saluran (chan) ialah paip komunikasi antara goroutine dan medium untuk goroutine berkomunikasi dengan goroutine lain. Saluran ialah teknologi yang membolehkan satu goroutine menghantar data ke goroutine lain secara lalai, saluran adalah dua arah, bermakna goroutine boleh menghantar atau menerima data melalui saluran yang sama.

Dalam Go, kita boleh berkongsi dan menghantar data antara fungsi dengan mudah dengan menghantar saluran fungsi sebagai argumen fungsi menggunakan kata kunci chan. Langkah-langkah khusus adalah seperti berikut: Cipta saluran untuk menghantar jenis data tertentu. Lulus saluran sebagai parameter dalam fungsi menggunakan kata kunci chan dan nama saluran. Gunakan saluran sehala

Paip dan saluran ialah alat penting untuk mencapai keselarian dan keselarasan dalam Go. Mereka boleh mengoptimumkan prestasi fungsi Go dengan cara berikut: Saluran Paip: melaksanakan I/O selari dan meningkatkan daya pemprosesan. Saluran: Saluran paip buffer yang mengurus pelaksanaan serentak tugasan intensif pengiraan. Penerimaan terpilih: Terima data daripada berbilang saluran untuk meningkatkan kecekapan.

Saluran ialah mekanisme komunikasi dalam bahasa Go untuk memindahkan data dengan selamat antara fungsi serentak. Saluran ini menyediakan perlindungan perlumbaan data untuk mengelakkan akses terus kepada memori yang dikongsi. Jenis saluran termasuk saluran tidak buffer (chanT) dan saluran buffered (chanT, int). Peraturan termasuk menghantar nilai (

Melaksanakan SelectChannelsGo peningkatan kecekapan pengaturcaraan serentak melalui Golang Pengenalan: Dalam bidang pembangunan perisian hari ini, pengaturcaraan serentak yang cekap adalah penting. Pengaturcaraan serentak boleh memanfaatkan sepenuhnya keupayaan berbilang teras pemproses moden dan meningkatkan kecekapan dan prestasi pelaksanaan program. Golang ialah bahasa pengaturcaraan yang direka dengan mengambil kira konkurensi Melalui mekanisme goroutin dan saluran terbina dalam, pengaturcaraan serentak yang cekap boleh dicapai dengan mudah. Artikel ini akan menggunakan Golang untuk

Dalam golang, anda boleh menggunakan fungsi close() untuk menutup saluran, sintaksnya ialah "close(msg_chan)". Saluran (chan) ialah sumber sistem, jadi apabila anda tidak perlu menggunakan chan, anda perlu menggunakan fungsi terbina dalam dekat untuk menutup paip secara manual. Nota: Jika anda menghantar data ke paip tertutup, program akan panik.

Dalam bahasa Go: Kawalan serentak fungsi membenarkan penciptaan fungsi yang dilaksanakan serentak menggunakan kata kunci go atau goroutine. Saluran ialah baris gilir penimbal yang digunakan untuk menghantar nilai antara fungsi serentak, menyediakan penyegerakan dan komunikasi. boleh digunakan

Dalam bahasa Go, struktur dalaman saluran termasuk jenis elemen, penunjuk penimbal, kunci mutex, hantar dan terima baris gilir. Mekanisme penghantaran dan penerimaan melibatkan bangun goroutine untuk menghantar atau menerima data. Saluran dibahagikan kepada buffer dan unbuffered. Saluran buffer membolehkan goroutine menghantar data tanpa penerima, manakala saluran tidak buffer memerlukan penerima sebelum menghantar.
