首先感谢Amoeba的作者提供这么好的工具。
最近有一个应用使用Amoeba从几个库中读取MySQL中含有longblob字段的表,老是报Session was killed。
经查是Amoeba中可读通道的缓存大小引起的。原来在com.meidusa.amoeba.net.io.PacketInputStream类中,有一个属性maxPacketSize,限制了可读通道的缓存大小,如果当前读取的记录的长度大于maxPacketSize,就会报错。所以我们必须把它调大点。
/** 最大容量 */
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塞满了内存。
分享到:
相关推荐
标题中的“amoeba集群文档+Amoeba使用指南pdf+mysql主从同步”是指一系列关于Amoeba中间件和MySQL数据库集群的知识资源,包括Amoeba的集群部署、使用方法以及MySQL的主从同步策略。这些文档将帮助读者理解如何构建高...
- **解决分布式数据库问题**:随着业务规模的扩大,单一数据库往往无法满足高并发和大数据量的需求,Amoeba能够有效解决这类问题。 - **提升系统性能**:通过对数据进行合理切分和负载均衡,Amoeba能够显著提高系统...
- 大数据量查询:Amoeba 不适合处理返回大量数据的查询,这可能导致性能问题。 - 分库分表:当前版本的 Amoeba 只能处理分库,而不支持分表,这意味着每个数据库实例必须保持相同的库表结构。 2. 安装部署 在部署 ...
总之,Amoeba作为一款Java环境下的MySQL读写分离解决方案,通过智能的分片策略和高可用性设计,能够有效提升系统的读取性能和容错能力。但在实际应用中,需要结合业务需求和技术限制,合理选择和配置,才能发挥其...
amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gzamoeba-mysql-binary-2.2.0.tar.gz amoeba-mysql-binary-2.2.0.tar.gz ...
"amoeba-mysql-binary" 是一个与MySQL数据库相关的开源项目,其主要功能是提供一种分布式解决方案,用于扩展MySQL服务器的能力,提升数据库的可扩展性和可用性。Amoeba这个名字来源于生物学中的变形虫,寓意该系统...
Amoeba作为一个专注于分布式数据库代理开发的项目,旨在解决数据切分、读写分离等问题,为用户提供高性能、高可用性的解决方案。 #### 二、分布式数据库系统的优势 分布式数据库系统相比于传统的集中式数据库系统...
它支持读写分离,这意味着读操作可以分散到多个从服务器上,而写操作仍然在主服务器上进行,从而提高了数据库的并发处理能力和读取性能。 **读写分离:** 读写分离是数据库优化的一种常见策略,尤其适用于读操作远...
Amoeba致力于解决数据切分问题,以及客户端在处理分布式数据时的“集中式”问题。Amoeba对客户端是透明的,它位于客户端和数据库服务器之间,支持负载均衡、高可用性、SQL过滤、读写分离等功能,并且能够将相关查询...
在分布式系统中,读写分离是常见的优化策略,它能有效减轻主数据库的压力,提高读取操作的响应速度,尤其对于那些读操作远多于写操作的业务场景特别适用。 Amoeba MySQL 代理的工作原理是,当客户端发起SQL查询时,...
标题“amoeba-aladdin-binary”指的是一个与Amoeba Aladdin相关的二进制软件包,主要为Microsoft SQL Server(MSSQL)提供驱动程序。这个软件包的核心目标是连接和管理MSSQL数据库,可能提供了高效的数据分片和负载...
标题中的"amoeba-mysql-binary-2.2.0.tar" 指的是一种名为Amoeba MySQL二进制分发版的软件包,版本号为2.2.0,其存储格式为tar档案。Amoeba是一个分布式数据库中间件,它能够将一个MySQL实例透明地扩展到多个节点,...
Amoeba在分布式数据库系统中的作用主要是解决数据切分问题,使得客户端能够在不知道具体数据物理位置的情况下进行操作。这样不仅简化了客户端的复杂性,还实现了对数据的统一管理。 #### Amoeba概述 Amoeba是一个...
总结起来,Amoeba+MySQL的读写分离可以提升系统的读取性能,而Keepalived+MySQL则提供了高可用性保障,确保在主服务器出现问题时服务不中断。这两者结合使用,能够构建一个既高效又稳定的数据库系统。在实际应用中,...
Amoeba监控每个节点的状态,当检测到某个节点出现问题时,可以自动将流量切换到其他健康节点,保证服务的连续性。一旦问题解决,数据和状态可以同步回原节点,恢复其服务。 **6. 性能优化** Amoeba提供了缓存和查询...
MySQL 搭建 Amoeba 读写分离 在本文中,我们将详细介绍如何使用 Amoeba 实现 MySQL 读写分离的配置过程。Amoeba 是一个基于 MySQL 的 proxy,能够集中地响应应用的请求,并根据用户事先设置的规则,将 SQL 请求发送...
它在2008年开始发布,设计目标是解决传统集中式数据库系统的性能瓶颈、可靠性和可扩展性问题。Amoeba作为SQL路由工具,位于客户端和数据库服务器之间,对客户端透明,提供了负载均衡、高可用性、SQL过滤、读写分离...
在MySQL等传统关系型数据库无法满足大规模数据存储和高并发访问需求时,Amoeba应运而生,为解决这些问题提供了一种有效的解决方案。 **Amoeba的工作原理** Amoeba通过透明分片技术将一个大的数据库逻辑上划分为多个...
【标题】: 使用Amoeba配置MySQL代理 【描述】: 安装并配置Amoeba作为MySQL代理,实现数据库的高可用性和负载均衡。 【标签】: 教育 【正文】: Amoeba是一种分布式数据库中间件,用于MySQL数据库的高可用性和负载...