疑难杂症:列表查询接口报错:操作超时

173 天前
 Visitor233
如果我能解决这个问题,给大伙发 500 块红包。

超时报错很频繁,峰值隔几十秒来一次,或者几分钟来一次。

1:sqlserver 2008r2,订单详情表和生产表都是 50 万行数据,300 多列,想过扩展事件记录 duration 超过 5 秒的 SQL ,但服务器上没有 evenfile 。查日志也没有 deadlock ,不清楚开了记录没。
查询 SQL 单独拿出来运行很快,秒查。

2:.net framework 4.6 web api ,没有报错日志

3:站点和数据库在同一台服务器上,CPU 稳定 20%至 50 %,内存 80%,都未过载。

4:客户端 winform 程序也只有两台机器,车间人员手速操作挺快的。requeat 超时设置的是 60 秒。超时报错 50%都是卡在查询的 loading 函数里,没有增删改。
1781 次点击
所在节点    程序员
9 条回复
wujb07
173 天前
会不会是连接池问题
lasuar
173 天前
进一步定位 loading 函数里面的代码,是否查询有额外的数据处理逻辑;另一半超时在哪呢,50%是如何得出?
wu00
173 天前
问 AI 呗,你需要的是排查思路。
先排查是客户端问题还是服务端问题,排查网关/服务端/客户端的请求响应日志
你连是客户端问题还是服务端问题都没说清楚,只知道卡在 loading ,你说是超时,那么有 504 超时响应么、服务端有 499 么
asmoker
173 天前
loading 函数里一行代码一行日志,打印关键信息和耗时
shangsharon
173 天前
在 web api 里加类似 miniprofiler 的组件记录接口执行时长,看能不能找到问题.
daxin945
173 天前
排查一下网络状况?
opengps
173 天前
关注下磁盘队列长度,并发可能读取量过大产生了队列等待
yinmin
172 天前
sql server 用了几十年了,上千人同时使用的企业应用 sql server 完全没问题,一句 sql 查询跑几十分钟完全不影响其它用户读写的。

我估计大概率是程序写的有问题,检测步骤如下:
(1) 运行 SELECT session_id,connect_time,client_net_address,auth_scheme FROM sys.dm_exec_connections; 查询 connection 情况,如果同一个客户端连接数太多,说明代码写的有问题。
c#连数据库,SqlConnection 、SqlCommand 是必须要用 using 的,不用 using 会 connection 不释放,然后连接数超限就会卡死一段时间。(用法见: https://sanderrossel.com/using-c-to-connect-to-and-query-from-a-sql-database/ )。如果没有用 using ,必须重写代码加上 using !!!

(2) 长时间的 SQL 语句,需要配置 Cmd.CommandTimeout 值,例如 1800 秒,避免超时。

(3) 查 sql 实时运行情况,是用 sql server profiler ,连上服务器配置条件后就能实时看到 sql 了。对于时间过长的 sql ,可以使用 sql server management studio 的"显示估计的执行时间"功能,在耗时大的地方看看是否需要加索引。

(4) 关键之关键:服务器内存必须大于数据库总容量的,找到 sql 数据库的 data 目录,mdf 文件合计大小算一下,直接*1.25 倍,就是应该服务器内存大小,如果 mdf 合计有 40GB ,服务器就要配置 64GB 内存,如果 mdf 合计有 100GB ,服务器就要配 128GB 内存,依次类推(可以适当扣除一些基本不会用到的数据库数据)。
yinmin
172 天前
SQL Server 2008R2 安装补丁后,版本应该是 10.50.6220 ,如果是 10.50.1600 说明数据库运维是不合格的,原始版本一个补丁都没打。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1119849

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX