用于缩短.NET代码和SQL Server之间执行时间的核对表.从基本到奇怪的解决方案的任何事情都表示赞赏.
码:
更改avgbody在命令和连接中的默认超时.
使用存储过程调用而不是avgbody的内联sql语句.
使用Jay Shepherd的 Activity监视器查找阻塞/锁定.
SQL Server:
请注意AlexCuse在存储过程中的参数嗅探.
谨防Martin Clarke动态增长数据库.
使用Profiler查找BradO需要更长时间100毫秒的任何查询/存储过程.
avgbody增加事务超时.
avgbody将动态存储过程转换为静态过程.
查看Jay Shepherd对服务器的忙碌程度.
我想知道如何在一定时间后隐藏/删除标签.是否有一些内置的东西或我是否使用线程(如果javascript可以这样做?)
我刚才的原始问题是MSMQ Slow Queue Reading,但是我已经提出了这个问题,现在我觉得我知道这个问题更清楚了.
我的代码(实际上是我正在使用的开源库的一部分)看起来像这样:
queue.Receive(TimeSpan.FromSeconds(10), MessageQueueTransactionType.Automatic);
Run Code Online (Sandbox Code Playgroud)
哪个使用Messaging.MessageQueue.Receive函数和队列是MessageQueue.问题如下.
将使用指定的超时(10秒)调用上面的代码行.该Receive(...)函数是一个阻塞函数,并且应该阻塞,直到消息到达队列,此时它将返回.如果在超时之前没有收到任何消息,它将在超时时返回.如果在调用函数时消息在队列中,它将立即返回该消息.
然而,正在发生的Receive(...)是正在调用函数,看到队列中没有消息,因此等待新消息进入.当新消息进入时(超时之前),它没有检测到这条新消息并继续等待.最终会超时超时,此时代码会继续并Receive(...)再次调用,然后它会获取消息并对其进行处理.
现在,此问题仅在数天/周后发生.通过删除和重新创建队列,我可以再次正常工作.它发生在不同的计算机和不同的队列上.因此,似乎某些东西正在积累,直到它打破了该Receive(...)函数使用的触发/通知能力.
我检查了很多不同的东西,一切看起来都很正常,与正常工作的队列没什么不同.有足够的磁盘空间(13gig免费)和RAM(从我可以告诉的1GB大约350MB空闲).我检查了所有看起来与其他队列相同的注册表项,并且性能监视器没有显示任何异常.我也运行了TMQ工具,看不出任何明显的错误.
我在所有机器上都使用Windows XP,它们都安装了Service Pack 3.我没有向队列发送大量消息,最多每2秒发送一次,但通常不会那么频繁.这些消息也很小,远不及4MB的限制.
我刚刚注意到的唯一事情是C:\ WINDOWS\system32\msmq\storage中的p0000001.mq和r0000067.mq文件都是4,096KB,但是在其他计算机上它们的大小也是当前没有遇到问题的.问题不会立即发生在计算机上的每个队列中,因为我可以在计算机上重新创建1个问题队列,而其他队列仍然会遇到问题.
我对MSMQ不是很有经验,所以如果你发布可能要检查的东西,请解释如何检查它们或在哪里可以找到你所谈论的更多细节.
目前的情况是:
所以我有大量的计算机/队列来比较和测试.
我想将数据发送到服务器,然后等待一分钟的答案,然后关闭套接字.
怎么做?
DatagramPacket sendpack = new ......;
socket.send(pack);
DatagramPacket recievepack = new .....;
//wait 1 minute{
socket.recieve(buf);
//wait 1 minute}
socket.close();
Run Code Online (Sandbox Code Playgroud) 我有一个C#脚本,HTTP POST到另一台服务器WebRequest.我想测试一下,如果其他服务器没有响应,我的Web应用程序将如何响应.在不更改任何应用程序代码或配置的情况下,最好的方法是什么?Fiddler能否对来自我本地IIS的请求造成超时?
我在执行http请求时如何设置超时?
我有这个代码:
{
QNetworkRequest request;
request.setUrl(QUrl("http://www.foo.com"));
request.setRawHeader("User-Agent", USER_AGENT.toUtf8());
request.setRawHeader("Accept-Charset", "ISO-8859-1,utf-8;q=0.7,*;q=0.7");
request.setRawHeader("Accept",
"text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
request.setRawHeader("Accept-Language", "en-us,en;q=0.5");
request.setRawHeader("Connection", "Keep-Alive");
reply = m_networkManager->get(request);
QEventLoop loop;
connect(reply, SIGNAL(finished()), &loop, SLOT(quit()));
loop.exec();
}
Run Code Online (Sandbox Code Playgroud)
我在何处以及如何为请求设置某种超时?
我有一个实时应用程序,客户端使用websockets连接Spring Framework服务器,该服务器运行Spring Boot Tomcat.我希望服务器能够快速(在5秒内)检测到客户端由于网络断开或其他问题而停止响应并关闭websocket.
我试过了
将文档中描述的"配置WebSocket引擎"设置为最大会话空闲超时 http://docs.spring.io/spring/docs/current/spring-framework-reference/html/websocket.html
@Bean
public WebSocketHandler clientHandler() {
return new PerConnectionWebSocketHandler(ClientHandler.class);
}
@Bean
public ServletServerContainerFactoryBean createWebSocketContainer() {
ServletServerContainerFactoryBean container =
new ServletServerContainerFactoryBean();
container.setMaxSessionIdleTimeout(5000);
container.setAsyncSendTimeout(5000);
return container;
}
Run Code Online (Sandbox Code Playgroud)我不确定这是否正确实现,因为我没有看到ServletServerContainerFactoryBean和我的一代ClientHandler之间的链接.
每2.5秒从服务器发送ping消息.通过断开网络连接手动断开客户端连接后,服务器会愉快地再发送ping超过30秒,直到出现传输错误.
同时1和2
1和2并server.session-timeout = 5在application.properties中设置
我测试这个的方法是:
Spring FrameworkTomcat服务器如何快速检测到客户端已断开连接或未响应以关闭websocket?
我正在使用psycopg2连接到远程主机上的PostgreSQL数据库.我打开一个连接并等待请求,然后对于每个请求,我在连接上运行查询并返回数据.
但是当连接已经打开后网络连接丢失时,下一个数据库查询会挂起,我必须手动终止该程序.
细节:
我需要一些可靠的方法来在运行查询之前检测失败的连接,因此我的程序不会挂起,或者cursor.execute(..)在失败的连接上引发异常的方法.
import psycopg2
import time
conn = psycopg2.connect("host='dbs' dbname='foo' user='joe' password='x'")
time.sleep(10) # I manually turn VPN off during this sleep..
cu = conn.cursor()
cu.execute('SELECT 1') # <- hangs here
print cu.fetchone()
cu.commit()
Run Code Online (Sandbox Code Playgroud)
设置TCP超时"全局" - 在psycopg2导入之前,我添加了:
import socket
socket.setdefaulttimeout(10)
Run Code Online (Sandbox Code Playgroud)在psycopg.connection套接字上设置TCP超时:
..
conn = psycopg2.connect(...
s = socket.fromfd(conn.fileno(), socket.AF_INET, socket.SOCK_STREAM)
s.settimeout(5)
..
Run Code Online (Sandbox Code Playgroud)为psycopg.connection …
我的应用程序中不断出现Redis :: Timeout错误(在UI和后台作业中).我正在为Redis使用AWS ElastiCache服务.
这就是我创建Redis连接的方式.在我的config/application.rb中,我有:
$redis = Redis.new(host: REDIS_HOST, port: REDIS_PORT, db: REDIS_DB)
Run Code Online (Sandbox Code Playgroud)
如何避免出现超时错误?我使用默认连接设置如下:
> $redis.client.options[:reconnect_attempts]
=> 1
> $redis.client.options[:timeout]
=> 5.0
> $redis.client.options[:tcp_keepalive]
=> 0
> $redis.client.options[:inherit_socket]
=> false
Run Code Online (Sandbox Code Playgroud) 我收到客户遇到的许多错误的报告
Symfony的\分量\调试\异常\ FatalErrorException
最大执行时间超过30秒
我,我自己,无法在我的本地机器上或生产服务器上复制它.这个网址遍布整个网站,因此,我猜它是全球性的,就像一个造成这种情况的中间件.
我使用Sentry.io来收集数据,但异常跟踪只有1个条目指向Symfony基本代码中的某个代码,最常见的是:
第73行的vendor/symfony/finder/Iterator/ExcludeDirectoryFilterIterator.php
第45行的vendor/symfony/finder/Iterator/DateRangeFilterIterator.php
第69行的vendor/symfony/finder/Iterator/RecursiveDirectoryIterator.php
显然,似乎存在与文件系统相关的东西,但由于没有跟踪,我无法看到在站点代码中查找错误的位置.我猜它是某种无限循环或泄漏,但没有任何痕迹可以看,并没有一致的方法来重现问题.
我应该如何寻找问题并进行调试?
我可以设置任何设置,还是可以使用/启用的工具?