标签: connection-timeout

MySQL Workbench在空闲时丢弃连接

我在我的OS X 10.9.5上使用MySQL Workbench 6.3管理多个云数据库(托管在Rackspace上),我得到以下问题:

当不活动5分钟时,会发生以下问题:

  • 我无法运行任何查询(错误2013:在查询期间丢失与MySQL服务器的连接)
  • 当我尝试浏览我的数据库中的表时,我收到的消息如"无法获取表","无法获取视图"等等
  • 刷新左侧面板时,我得到一个"错误代码:2006 MySQL服务器已经消失"

所以基本上连接已经消失了.

这真的很烦人,因为它只在不活动5分钟后发生.因此,我需要关闭连接并每次重新打开它.

我也试过这个:MySQL Workbench:如何保持连接活着,这没有改变任何东西.在我的Workbench Preferences选项卡中,我有以下设置:

  • DBMS连接保持活动间隔(以秒为单位):600
  • DBMS连接读取超时(以秒为单位):600
  • DBMS连接超时(以秒为单位):60

请注意,此问题恰好在不活动5分钟后发生!如果我在4'59分钟的间隔内运行两个查询,它的工作完全正常.同样在Workbench上连接到同一数据库的同事也没有这个问题.

有人有解决方案吗?

mysql database timeout mysql-workbench connection-timeout

32
推荐指数
2
解决办法
2万
查看次数

帮助排除SqlException故障:在非负载情况下,连接超时

我有一个托管我的网站的服务器几乎没有流量.
一些人(<20)每天进入该网站,一些RSS阅读器订阅了我们推出的一些提要.

几乎每天晚上,一个RSS阅读器都会在半夜打电话给我们,并且由于连接中的超时而导致网站无法连接到SQL Server.细节非常奇怪,所以我正在寻找一些可能出现问题的帮助,因为我不知道从哪里开始寻找.

我们在Windows Server 2008上使用ASP.Net MVC,实体框架和SQL Server 2008.这台机器是我们从一个不完全顶级的提供商那里获得的专用盒子,所以事情可能是非最佳配置,或者谁知道什么其他.
盒子也很小,只有1Gb的RAM,但它应该承担我们现在的那种负载......

我正在复制下面的完整调用堆栈,但首先,我们知道的一些事情:

  • 当iTunes查询我们的网站时,总会发生错误.我相信这应该与任何事情无关,但事实是我们只能从iTunes获得它.我最好的猜测是,这种情况发生是因为只有iTunes在当晚没有其他人打我们的时候询问我们.
  • 我们的一个理论是,SQL Server和IIS正在为内存而战,其中一个是从未被使用中被分页到磁盘,当有人"唤醒它"时,从磁盘上读取所有内容需要很长时间进入记忆.这有可能发生吗?(我有点丢弃这个,因为如果可能的话,它听起来像SQL Server中的设计问题)
  • 我还想到了我们泄漏连接的可能性,因为我们可能没有适当地处理EF实体(请参阅我的问题).这是我通过谷歌搜索问题找到的唯一一件事.鉴于我们的负载极低,我正在抛弃这一点.
  • 这总是发生在整个晚上,所以这很可能与一段时间没有发生任何事情有关.例如,我很确定当这些请求命中时,Web服务器进程被回收并且它正在启动/重新监视所有内容.但是,重新JITting并没有解释SQL超时.

更新:我们按照建议添加了一个分析器,在我们遇到新的异常之前花了很长时间.这是我们所知道的新内容:

  • 将探查器附加到极大地减少了我们得到的错误数量.事实上,通常在每天几次之后,我们不得不等待3或4天才能发生这种情况.一旦我们停止了探查器,它就会恢复到正常的错误频率(甚至更糟).因此,探查器有一定的效果可以在某种程度上隐藏这个问题,但并不完全.
  • 查看IIS请求日志旁边的探查器跟踪,请求和查询之间存在预期的1-1对应关系.但是,我偶尔会看到很多正在执行的查询与IIS日志完全无关.实际上,就在记录实际错误之前,我在3分钟内得到了750个查询,所有查询都与IIS日志完全无关.查询文本看起来像EF生成的那种不可读的废话,并且它们并不完全相同,它们看起来就像来自网站的查询:相同的ApplicationName,User等.想一想这多么荒谬是的,该网站在2天的过程中获得了大约370个IIS请求
  • 这些无法解释的查询并非来自与之前网站相同的ClientProcessID,尽管它们可能仍然来自网站,如果此过程在此期间被回收.在最后解释的查询与第一个无法解释的查询之间有近一个小时没有活动.
  • 在我记录错误之前,我不知道它们来自哪里的长条查询之一就出现了,所以我相信这是我们应该遵循的线索.
  • 正如我原先预期的那样,当执行抛出错误的查询时,它来自与前一个不同的ClientProcessID(比前一个无法解释的一个晚了8分钟,几乎比前一个IIS快一个小时).对我来说,这意味着工人流程确实得到了回收.
  • 这是我绝对不明白的事情.IIS日志显示错误请求前一分钟,4完全服务,尽管这些查询根本没有显示在跟踪中.事实上,在那些顺利完成的4个之后,我有4个例外快速连续抛出,这4个也没有显示在跟踪中(这是有道理的,因为如果有连接超时,查询应该从未执行过,但我没有看到跟踪中的连接尝试)

所以,简而言之,我对这一点完全无能为力.我无法找到那些快速连续运行的数百个查询的原因,但我相信这些问题必须与问题有关.
我也不知道如何诊断连接问题...
或者如果Profiler跟踪可能会丢失一些根据IIS进行的查询...

有任何想法吗?


这是例外信息:

System.Data.SqlClient.SqlException: Timeout expired. The timeout period elapsed prior to completion of the operation or the server is not responding.

System.Data.EntityException: The underlying provider failed on Open. ---> System.Data.SqlClient.SqlException: Timeout expired.  The timeout period elapsed prior …
Run Code Online (Sandbox Code Playgroud)

connection timeout sql-server-2008 connection-timeout

31
推荐指数
1
解决办法
3万
查看次数

如何修复Elasticsearch中的读取超时

我使用Elasticsearch-1.1.0来索引推文.索引过程没问题.然后我升级了版本.现在我使用Elasticsearch-1.3.2,我随机收到这条消息:

Exception happened: Error raised when there was an exception while talking to ES.
ConnectionError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)) caused by: ReadTimeoutError(HTTPConnectionPool(host='127.0.0.1', port=8001): Read timed out. (read timeout=10)).
Run Code Online (Sandbox Code Playgroud)

随机快照:

Happened --33s-- Happened --27s-- Happened --22s-- Happened --10s-- Happened --39s-- Happened --25s-- Happened --36s-- Happened --38s-- Happened --19s-- Happened --09s-- Happened --33s-- Happened --16s-- Happened 

--XXs-- = after XX seconds
Run Code Online (Sandbox Code Playgroud)

有人可以指出如何解决Read timed out问题吗?

非常感谢你.

timeout timeoutexception connection-timeout executiontimeout elasticsearch

29
推荐指数
4
解决办法
5万
查看次数

多线程Windows服务中的多个同时SQL连接超时

我有一个多线程Windows服务,我用VS 2010(.NET 4.0)开发,可以有几个到几十个线程,每个线程通过Internet从慢速服务器检索数据,然后使用本地数据库记录这个数据(因此进程受Internet限制,而不是LAN或CPU绑定).

有一些规律性,我从几个线程同时得到以下错误的洪水/乱舞/爆发:

System.Data.SqlClient.SqlException(0x80131904):超时已过期.操作完成之前经过的超时时间或服务器没有响应.

此错误的调​​用堆栈通常是:

在System.Data.ProviderBase.DbConnectionPool.GetConnection(DbConnection owningObject)

在System.Data.ProviderBase.DbConnectionFactory.GetConnection(DbConnection owningConnection)

在System.Data.ProviderBase.DbConnectionClosed.OpenConnection(DbConnection outerConnection,DbConnectionFactory connectionFactory)

在System.Data.SqlClient.SqlConnection.Open()

我没有在连接字符串中指定连接超时,并且此数据库中还有其他应用程序和进程.有没有人遇到过这种行为,如果有的话,采取了哪些措施来防止它?

我的数据访问层中最常用的方法如下所示,我所有其他DAL方法都遵循相同的方法:

using (SqlConnection con = new SqlConnection(GetConnectionString()))
using (SqlCommand cmd = new SqlCommand("AddGdsMonitorLogEntry", con))
{
    cmd.CommandType = CommandType.StoredProcedure;

    /* setting cmd.Parameters [snipped] */

    // We have been getting some timeouts writing to the log; wait a little longer than the default.
    cmd.CommandTimeout *= 4;

    con.Open();

    cmd.ExecuteNonQuery();
}
Run Code Online (Sandbox Code Playgroud)

非常感谢!

编辑

鉴于在镜像环境中发生这种情况的评论,我确实应该提到有问题的数据库是镜像的.它在SSMS中标记为"Principal,Synchronized","高安全性,无自动故障转移(同步)"模式.

编辑5/26/11

我在SQL Server日志中看不到任何问题.(我无法访问该服务器上的Windows事件查看器,但我已经要求有人找我.)

sql-server multithreading connection-timeout

25
推荐指数
2
解决办法
2万
查看次数

Sql Alchemy QueuePool限制溢出

我有一个返回TimeOut的Sql Alchemy应用程序:

TimeoutError:达到大小为5的QueuePool限制溢出10,连接超时,超时30

我在另一篇文章中读到,当我不关闭会话时会发生这种情况,但我不知道这是否适用于我的代码:

我在init.py中连接到数据库:

from .dbmodels import (
    DBSession,
    Base,    

engine = create_engine("mysql://" + loadConfigVar("user") + ":" + loadConfigVar("password") + "@" + loadConfigVar("host") + "/" + loadConfigVar("schema"))

#Sets the engine to the session and the Base model class
DBSession.configure(bind=engine)
Base.metadata.bind = engine
Run Code Online (Sandbox Code Playgroud)

然后在另一个python文件中我收集了两个函数中的一些数据,但是使用了我在init.py中初始化的DBSession:

from .dbmodels import DBSession
from .dbmodels import resourcestatsModel

def getFeaturedGroups(max = 1):

    try:
        #Get the number of download per resource
        transaction.commit()
        rescount = DBSession.connection().execute("select resource_id,count(resource_id) as total FROM resourcestats")

        #Move the data to an array
        resources …
Run Code Online (Sandbox Code Playgroud)

python session sqlalchemy zope connection-timeout

25
推荐指数
2
解决办法
2万
查看次数

是否有可能增加CloudFlare超时?

是否有可能增加CloudFlare的超时时间?如果有,怎么样?

我的代码需要一段时间才能执行,我不打算在未来几天对其进行Ajax化.

在此输入图像描述

timeout connection-timeout cloudflare

22
推荐指数
3
解决办法
3万
查看次数

ActiveRecord :: ConnectionTimeoutError偶尔发生

每当我有一个使用ActiveRecord的应用程序时,我得到这个ConnectionTimeoutError - 但总是在一段未知的时间之后

ActiveRecord::ConnectionTimeoutError (could not obtain a database connection within 5 seconds.  The max pool size is currently 30; consider increasing it.):
Run Code Online (Sandbox Code Playgroud)

它之前设置为5,我们已经增加了它,并且它无法同时使用30个连接.我们使用ActiveRecord的唯一方法是我们的​​会话存储.

我们的database.yml文件如下所示:

development:
  adapter: sqlite3
  database: db/development.sqlite3
  pool: 30
  timeout: 5000
Run Code Online (Sandbox Code Playgroud)

(测试和生产设置相同)


我一直在谷歌搜索这个事件,刚刚发现这个帖子:

https://groups.google.com/forum/#!msg/copenhagen-ruby-user-group/GEHgi_WudmM/gnCiwWqmVfMJ

哪个提到ActiveRecord一旦完成就不会检查连接回池?真的吗?我是否需要手动管理连接?

我很感激任何建议!!

编辑我应该提一下我正在运行Rails 3.1.3

activerecord database-connection ruby-on-rails connection-timeout ruby-on-rails-3.1

20
推荐指数
1
解决办法
1万
查看次数

使用sping的restTemplate超时,如何检测超时?

我已经初始化了我的restTemplate,如下所示:

HttpClient httpClient = HttpClientBuilder.create().build();
HttpComponentsClientHttpRequestFactory requestFactory = new HttpComponentsClientHttpRequestFactory(httpClient);
requestFactory.setConnectTimeout(1000);
requestFactory.setReadTimeout(1000);
restTemplate = new RestTemplate(requestFactory);
Run Code Online (Sandbox Code Playgroud)

而我这样称呼它:

restTemplate.getForEntity(someString, String.class, SomeHashmapWithURLParameters)
Run Code Online (Sandbox Code Playgroud)

我如何处理这两个超时?我假设会抛出一个异常?如果是这样,我可以捕获哪个特定的异常,以便专门处理只是超时.我以不同的方式处理其他异常.

java timeout connection-timeout resttemplate spring-boot

19
推荐指数
1
解决办法
2万
查看次数

为什么JavaMail连接超时太长

在我的应用程序中,我连接到服务器以验证用户.这是代码:

try {
        Properties prop = new Properties();
        prop.put("mail.smtp.starttls.enable","true");
        prop.put("mail.smtp.auth", "true");
        prop.put("mail.smtp.connectiontimeout", 1000);


        Session session = Session.getInstance(prop, null);
        Transport transport = session.getTransport("smtp");
        transport.connect("mion.elka.pw.edu.pl", 587, registerLog, registerPass);
        transport.close();
        return true;
    } catch (NoSuchProviderException ex) {
        Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    } catch(AuthenticationFailedException ex) {
        Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    } catch (MessagingException ex) {
        Logger.getLogger(RegisterController.class.getName()).log(Level.SEVERE, null, ex);
        return false;
    }
Run Code Online (Sandbox Code Playgroud)

我将连接超时设置为1000毫秒= 1秒,但它被忽略.当我调试并设置错误的用户名和密码时,我抓住了

javax.mail.MessagingException: java.net.SocketTimeoutException: Read timed out
Run Code Online (Sandbox Code Playgroud)

不是在1000毫秒之后,而是在5000*60毫秒= 5分钟之后

怎么了 ?我怎样才能减少时间?

java jakarta-mail connection-timeout

17
推荐指数
6
解决办法
4万
查看次数

PHP file_get_contents忽略超时?

$url = 'http://a.url/i-know-is-down';

//ini_set('default_socket_timeout', 5);

$ctx = stream_context_create(array(
    'http' => array(
        'timeout' => 5,
        'ignore_errors' => true
        )
    )
);

$start = microtime(true);
$content = @file_get_contents($url, false, $ctx);
$end = microtime(true);
echo $end - $start, "\n";
Run Code Online (Sandbox Code Playgroud)

我得到的反应一般是21.232 segs,不应该是大约5秒???

取消注释ini_set行根本没有帮助.

php file-get-contents connection-timeout

14
推荐指数
1
解决办法
1万
查看次数