首页 数据库 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

使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

<🎜>:泡泡胶模拟器无穷大 - 如何获取和使用皇家钥匙
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
北端:融合系统,解释
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Mandragora:巫婆树的耳语 - 如何解锁抓钩
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

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

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

热门话题

Java教程
1670
14
CakePHP 教程
1428
52
Laravel 教程
1329
25
PHP教程
1276
29
C# 教程
1256
24
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关键字和通道名称将通道作为参数传递。使用单向通道

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

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

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

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

Go语言中chan通道的基本概念与使用方法 Go语言中chan通道的基本概念与使用方法 Mar 12, 2024 pm 05:42 PM

Go语言中chan通道的基本概念与使用方法Go语言作为一门并发编程语言,chan通道(channel)是其提供的一种重要的并发原语,用于在不同的goroutine之间进行通信和同步,实现数据传递和共享。chan通道是Go语言在语言级别提供的数据结构,适合在多个goroutine之间进行数据传递,实现共享内存的通信方式。本文将介绍chan通道的基本概念和使用方

golang函数并发控制与通道之间的关系 golang函数并发控制与通道之间的关系 Apr 25, 2024 am 08:39 AM

在Go语言中:函数并发控制允许使用关键字go或goroutine创建并发执行的函数。通道是一个缓冲队列,用于在并发函数之间传递值,提供同步和通信。可使用

通过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。

See all articles