Maison base de données tutoriel 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
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Qu'est-ce que la chaîne Chan en langue Go Qu'est-ce que la chaîne Chan en langue Go Jan 10, 2023 pm 06:55 PM

Dans le langage Go, un canal (chan) est un canal de communication entre les goroutines et un moyen permettant à une goroutine de communiquer avec une autre goroutine. Les canaux sont une technologie qui permet à une goroutine d'envoyer des données à une autre goroutine ; par défaut, les canaux sont bidirectionnels, ce qui signifie qu'une goroutine peut envoyer ou recevoir des données via le même canal.

canal de fonction golang passé en paramètre canal de fonction golang passé en paramètre Apr 22, 2024 pm 06:36 PM

Dans Go, nous pouvons facilement partager et transmettre des données entre fonctions en passant des canaux de fonction comme arguments de fonction à l'aide du mot-clé chan. Les étapes spécifiques sont les suivantes : Créez un canal pour transmettre un type spécifique de données. Passez le canal en paramètre dans la fonction en utilisant le mot-clé chan et le nom du canal. Utiliser des canaux à sens unique

Types et règles de canaux dans la programmation concurrente des fonctions Golang Types et règles de canaux dans la programmation concurrente des fonctions Golang Apr 18, 2024 am 08:57 AM

Les canaux sont un mécanisme de communication dans le langage Go permettant de transférer en toute sécurité des données entre des fonctions concurrentes. Ils offrent une protection contre la course aux données pour éviter l'accès direct à la mémoire partagée. Les types de canaux incluent les canaux sans tampon (chanT) et les canaux avec tampon (chanT, int). Les règles incluent l'envoi de la valeur (

Optimisation des performances de la fonction Go : conseils sur l'utilisation des canaux et des canaux Optimisation des performances de la fonction Go : conseils sur l'utilisation des canaux et des canaux May 03, 2024 am 09:33 AM

Les tuyaux et les canaux sont des outils importants pour réaliser le parallélisme et la concurrence dans Go. Ils peuvent optimiser les performances de la fonction Go des manières suivantes : Pipeline : implémentez des E/S parallèles et améliorez le débit. Canaux : pipelines tamponnés qui gèrent l'exécution simultanée de tâches gourmandes en calcul. Réception sélective : recevez des données de plusieurs canaux pour améliorer l'efficacité.

Implémenter l'amélioration de l'efficacité de la programmation simultanée Select Channels Go via Golang Implémenter l'amélioration de l'efficacité de la programmation simultanée Select Channels Go via Golang Sep 27, 2023 pm 02:58 PM

Implémentation de l'amélioration de l'efficacité de la programmation simultanée SelectChannelsGo via Golang Introduction : Dans le domaine du développement logiciel actuel, une programmation simultanée efficace est cruciale. La programmation simultanée peut tirer le meilleur parti des capacités multicœurs des processeurs modernes et améliorer l'efficacité et les performances d'exécution des programmes. Golang est un langage de programmation conçu dans un souci de concurrence. Grâce à ses mécanismes de goroutine et de canal intégrés, une programmation simultanée efficace peut être facilement réalisée. Cet article utilisera Golang pour

Comment fermer la chaîne dans Golang Comment fermer la chaîne dans Golang Jan 11, 2023 am 11:12 AM

En Golang, vous pouvez utiliser la fonction close() pour fermer le canal, la syntaxe est "close(msg_chan)". Le canal (chan) est une ressource système, donc lorsque vous n'avez pas besoin d'utiliser chan, vous devez utiliser la fonction intégrée close pour fermer manuellement le canal. Remarque : Si vous envoyez des données vers un canal fermé, le programme paniquera.

La relation entre le contrôle de concurrence de la fonction Golang et les canaux La relation entre le contrôle de concurrence de la fonction Golang et les canaux Apr 25, 2024 am 08:39 AM

Dans le langage Go : Le contrôle de concurrence des fonctions permet la création de fonctions exécutées simultanément à l'aide du mot-clé go ou goroutine. Un canal est une file d'attente tampon utilisée pour transmettre des valeurs entre des fonctions concurrentes, assurant la synchronisation et la communication. être utilisable

Comment les canaux dans les fonctions Golang sont-ils implémentés ? Comment les canaux dans les fonctions Golang sont-ils implémentés ? Jun 03, 2024 am 10:45 AM

Dans le langage Go, la structure interne du canal comprend les types d'éléments, les pointeurs de tampon, les verrous mutex et les files d'attente d'envoi et de réception. Le mécanisme d'envoi et de réception consiste à réveiller goroutine pour envoyer ou recevoir des données. Les canaux sont divisés en canaux tamponnés et non tamponnés. Les canaux tamponnés permettent à une goroutine d'envoyer des données sans récepteur, tandis que les canaux non tamponnés nécessitent un récepteur avant l'envoi.

See all articles