我正在努力面对c3p0配置面临的问题.我上周发布了一个问题 - C3P0配置!在哪里和如何?,但没有收到答复.任何帮助表示赞赏.
我将数以亿计的项目通过REST API从Heroku上的云服务器上传到我的数据库到AWS EC2中的数据库.我正在使用Python,我不断在日志中看到以下INFO日志消息.
[requests.packages.urllib3.connectionpool] [INFO] Resetting dropped connection: <hostname>
Run Code Online (Sandbox Code Playgroud)
在我的代码继续执行之前,这种"重置丢弃的连接"似乎需要很多秒(有时30秒以上).
谢谢你的帮助.安德鲁.
主要编辑:自从最初发现这个问题以来,我已将其削减到下面.我认为现在对这个问题的描述略微准确.因此,对OP的评论可能不完全相关.
编辑在rails/puma项目中发布的轻微修改版本:https://github.com/rails/rails/issues/21209,https://github.com/puma/puma/issues/758
编辑现在转载OS X和Rainbows
简介: 当使用Puma并运行长时间运行的连接时,我一直收到与跨越线程的ActiveRecord连接相关的错误.这表现在消息 message type 0x## arrived from server while idle
和锁定(崩溃)服务器中.
设置:
mysqld 5.6.25-0ubuntu0.15.04.1
)2.2.2p95 (2015-04-13 revision 50295) [x86_64-linux]
/ Rubiniusrbx-2.5.8
4.2.3
,4.2.1
)2.12.2
,2.11
)pg-0.18.2
)/ mysql2请注意,并非所有上述版本的组合都已尝试过.首先列出的版本是我目前正在测试的版本.
rails new issue-test
get 'events' => 'streaming#events'
streaming_controller.rb
pool: 2
但看到不同的池大小)码:
class StreamingController < ApplicationController
include …
Run Code Online (Sandbox Code Playgroud) ruby multithreading connection-pooling ruby-on-rails actioncontroller
我已经开发了一些类似于DAO的自定义类来满足我的项目的一些非常专业的需求,这是一个服务器端进程,它不在任何类型的框架内运行.
解决方案很有效,除了每次发出新请求时,我都会通过MySQLdb.connect打开一个新连接.
什么是最好的"drop in"解决方案,将其转换为在python中使用连接池?我正在想象类似于Java的公共DBCP解决方案.
这个过程是长时间运行的,并且有很多线程需要发出请求,但不是所有的同时...特别是他们在写出一大块结果的短暂爆发之前做了很多工作.
编辑添加:经过一些搜索,我发现anitpool.py看起来不错,但由于我对python相对较新,我想我只是想确保我没有错过更明显/更惯用/更好的解决方案.
我们将JBoss和Oracle放在不同的服务器上.这些连接似乎被丢弃并导致JBoss出现问题.如果连接不好,我怎样才能让JBoss重新连接到Oracle,同时我们弄清楚为什么首先要删除连接?
我目前正在ASP.net 2.0应用程序上进行一些GUI测试.RDBMS是SQL Server 2005.主机是Win Server 2003/IIS 6.0.
我没有应用程序的源代码,因为它是由一个没有发布代码的外部公司编写的.
我注意到当我重新启动IIS时应用程序运行良好但经过一些测试后,在我打开并关闭浏览器几个小时之后,应用程序开始变得越来越慢.我想知道这种行为是否是由于程序员关闭连接错误造成的:我怀疑这里的数据库是否存在开放连接泄漏.
我想.Net垃圾收集器最终将关闭它们但是......这可能需要一段时间,不是吗?
我有SQL Server Management Studio,我从活动监视器中注意到数据库上打开了很多连接.
从以上所述,以下是与主要问题相关的一些问题:
有没有办法在SQL Server 2005中知道连接是否打开是因为它们等待在连接池中使用,或者它们是否因为应用程序使用它们而打开?
somone是否知道良好的在线/纸质资源,我可以学习如何使用性能计数器或其他类型的工具来帮助追踪这类问题?
如果性能计数器是最佳解决方案,那么我应该注意哪些变量?
sql-server asp.net connection-pooling performancecounter connection-leaks
目前我们正在使用4个带有8GB RAM的cpu windows box,并在同一个盒子上安装了MySQL 5.x. 我们在我们的应用程序中使用Weblogic应用程序服务器.我们针对我们的应用程序定位了200个并发用户(显然不是针对相同的模块/屏幕).那么我们应该在连接池中配置什么是最佳连接数(最小和最大数量)(我们使用的是weblogic AS'连接池机制)?
我花了一些时间专门为数据库和SQLite阅读不同的最佳实践.在阅读时我发现我做了很多我不应该做的事情,在尝试修复这些问题时,我在考虑使用SQLite及其ADO实现的一些更精细的细节时感到困惑.
我的困惑源于准备好的陈述和连接池.
在阅读http://msdn.microsoft.com/en-us/library/ms971481.aspx时,我发现只应为事务打开连接.交易完成后,应关闭连接.我没有牢牢掌握为什么会这样,但我一直在假设作者知道的比我更好.我明白当连接关闭时并不意味着它实际上已经存在已经关闭.它只是意味着它已被放回池中.
现在,为了改进我的查询和插入,我阅读了有关使用预准备语句 在SQLite中,准备好的语句真的能提高性能吗?和http://petesbloggerama.blogspot.com/2007/02/sqlite-adonet-prepared-statements.html似乎都表明,当执行多次执行的查询时,准备好的语句是可行的.我还读过,预准备语句特定于连接,并且一旦连接关闭,预准备语句就会丢失.
我的困惑是这个.如果我打开和关闭我的连接(可能或不可能意味着由于线程池而关闭连接)那么我从准备好的声明中获得了多少用处?我可以理解,如果我有1000个对象,我需要在单个事务中保存,准备好的语句可以帮助很多.但是我不相信我会看到在事务中保存单个对象会带来好处,因为一旦我关闭了连接,从第一个对象生成的预准备语句现在就会丢失.这是真实的陈述吗?
我相信准备好的语句与我的SQLiteCommand对象的范围有关,这进一步加剧了我的困惑.
如果我创建一个表示我将经常执行的查询的SQLiteCommand,我是否需要将SQLiteCommand保留在内存中以使预准备语句保持活动状态?
如果我用相同的SQLite语句创建一个新的SQLiteCommand,它是否认识到新的SQLiteCommand与前一个相同,因此有一个可以使用的预准备语句?
如果我在内存中保留一个SQLiteCommand并更改它的参数和连接,因为我打开并关闭不同事务的连接,我基本上在不同的连接之间保持一个准备好的语句?
我很可能在这一点上思考问题,但我希望你能帮助我更好地理解这些事情是如何相互作用的,这样我才能从中获益最多.
我正在使用Jedis池来管理与Redis服务器的连接.我的示例代码如下:
public Set<String> getTopArticleList(int start, int end) {
Set<String> list = null;
Jedis j = JedisFactory.getInstance().getJedisPool().getResource();
Pipeline pipe = j.pipelined();
try {
// do stuff with redis
pipe.sync();
} catch (JedisConnectionException jex) {
JedisFactory.getInstance().getJedisPool().returnBrokenResource(j);
} finally {
JedisFactory.getInstance().getJedisPool().returnResource(j);
}
return list;
}
Run Code Online (Sandbox Code Playgroud)
用于创建和检索Jedis池的代码:
class JedisFactory {
private static JedisPool jedisPool;
public JedisFactory() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
jedisPool = new JedisPool(
poolConfig,
RedisDBConfig.HOST,
RedisDBConfig.PORT,
RedisDBConfig.TIMEOUT,
RedisDBConfig.PASSWORD
);
}
public JedisPool getJedisPool() {
return jedisPool;
}
public static JedisFactory getInstance() …
Run Code Online (Sandbox Code Playgroud)