搜索
首页数据库mysql教程关于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塞满了内存。

bitsCN.com
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
Go语言中chan通道是什么Go语言中chan通道是什么Jan 10, 2023 pm 06:55 PM

在Go语言中,通道(chan)是goroutine之间通信的管道,是goroutine与另一个goroutine通信的媒介。通道是一种技术,它允许一个goroutine将数据发送到另一个goroutine;默认情况下,通道是双向的,这意味着goroutine可以通过同一通道发送或接收数据。

Go函数性能优化:管道与通道的使用技巧Go函数性能优化:管道与通道的使用技巧May 03, 2024 am 09:33 AM

管道和通道是Go中实现并行性与并发性的重要工具。它们可以通过以下几种方式优化Go函数性能:管道:实现并行I/O,提高吞吐量。通道:缓冲管道,管理计算密集型任务的并发执行。选择性接收:从多个通道中接收数据,提高效率。

golang函数通道作为参数传递golang函数通道作为参数传递Apr 22, 2024 pm 06:36 PM

在Go中,我们可以使用chan关键字将函数通道作为函数参数传递,从而轻松地在函数之间共享和传递数据。具体操作步骤如下:创建一个通道来传递特定类型的数据。在函数中使用chan关键字和通道名称将通道作为参数传递。使用单向通道

通过golang实现Select Channels Go并发式编程的效率提升通过golang实现Select Channels Go并发式编程的效率提升Sep 27, 2023 pm 02:58 PM

通过Golang实现SelectChannelsGo并发式编程的效率提升引言:在当今的软件开发领域,高效的并发编程是至关重要的。并发编程可以最大程度地利用现代处理器的多核能力,提高程序的执行效率和性能。Golang是一种以并发性为重点设计的编程语言,通过其内置的goroutine和channel机制,可以轻松实现高效的并发编程。本文将通过Golang中的

Golang函数并发编程中通道的类型和规则Golang函数并发编程中通道的类型和规则Apr 18, 2024 am 08:57 AM

通道是Go语言中用于在并发函数间安全传递数据的通信机制,提供的数据竞争保护避免直接访问共享内存。通道类型包括无缓冲通道(chanT)和缓冲通道(chanT,int)。规则包括发送值(

golang怎么将通道关闭golang怎么将通道关闭Jan 11, 2023 am 11:12 AM

在golang中,可以使用close()函数来关闭通道,语法“close(msg_chan)”。 通道(chan)是一种系统资源,因此在不需要使用chan 时,需要使用内置函数close来手动关闭管道。注如果向一个已经关闭的管道发送数据,那么程序会pannic。

使用time.After函数返回一个定时器的通道使用time.After函数返回一个定时器的通道Jul 24, 2023 am 08:06 AM

Title:使用time.After函数创建定时器Introduction:在Go语言中,我们可以使用time包中的time.After函数来创建一个定时器。定时器可以用于在指定的时间间隔之后执行任务或者触发某个事件。本文将介绍如何使用time.After函数创建一个定时器并提供相应的代码示例。一、time.After函数概述time.After函

golang函数中的通道是如何实现的?golang函数中的通道是如何实现的?Jun 03, 2024 am 10:45 AM

Go语言中,通道的内部结构包含元素类型、缓冲区指针、互斥锁、发送和接收队列。收发机制涉及唤醒goroutine来发送或接收数据。通道分为缓冲和无缓冲两种。缓冲通道允许goroutine在没有接收者的情况下发送数据,而无缓冲通道则需要发送前有接收者。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
3 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
3 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

MinGW - 适用于 Windows 的极简 GNU

MinGW - 适用于 Windows 的极简 GNU

这个项目正在迁移到osdn.net/projects/mingw的过程中,你可以继续在那里关注我们。MinGW:GNU编译器集合(GCC)的本地Windows移植版本,可自由分发的导入库和用于构建本地Windows应用程序的头文件;包括对MSVC运行时的扩展,以支持C99功能。MinGW的所有软件都可以在64位Windows平台上运行。

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

EditPlus 中文破解版

EditPlus 中文破解版

体积小,语法高亮,不支持代码提示功能

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境