> 文章列表 > 生产环境运行效率

生产环境运行效率

生产环境运行效率

用户反馈系统运行慢,程序偶发性报502、503错误?

兄弟 ,那你可能遇到了程序运行效率跟不上的问题了。哥们给你总结了以下几个排查方法和优化方法,仅供参考。

本贴持续更新中ing

一、    排查方法
1.    查看服务器 CPU、内存、硬盘读写 等资源占用情况
         分析出 硬件瓶颈 和 对应的程序及瓶颈功能
2.    SqlProfiler 查看查询长时间的语句
        跟踪出堵塞或者死锁
3.    SqlServer 报表查看统计分析
        查看执行时长等报表
4.    程序日志
        为程序添加日志,分析各个环节的执行情况
5.    NGINX 开启操作时长记录
        配置access.log输出的内容项,查看access.log
6.    ocelot
        查看NLOG
7.    IIS 
        查看连接数、等待数
        报错: 
          502 队列满了,或者 站点挂了 ??
          503 进了队列,但处理不过来,超时了
8.    查看端口使用情况
        netstat -ano | findstr "TIME_WAIT"
        netstat -ano | findstr "CLOSE_WAIT" 
        netstat -ant -p TCP

        排查端口使用情况,调度、轮循作业未及时释放端口容易导致端口用爆

9.     暂停使用轮循环和调度

        使用Quartz \\ Interval 等反复执行的语句,多线程大并发 等,容易因为对象不及时释放导致端口、连接资源 被用净

二、    常用优化方法
1.    池式连接
        HttpClient、数据库连接对接对象 等采用可复用的池式连接
2.    对象关闭
         对象使用完后,及时关闭   close(); dispose();  using(type c = new type()){}
3.    合理使用多线程
         Mta 调用Sta,用队列模型调用;
         异构系统中,考虑对接方的承受力,合理决策对接方式;
         设置单个线程超时机制;
4.    设置中间件
         队列数、并发处理数、超时时间;集群和服务拆解;
5.    超时时间、运行时间
        代码层面单个任务设置合理的超时时间,过期不候,以保证全局多个任务顺利进行
6.    线程锁、数据库锁分析与排查

三、 参考文档

1. 服务器大量TIME_WAIT和CLOSE_WAIT的原因及解决办法 - GaoYanbing - 博客园

2. IIS最大并发连接数 = 队列长度 + IIS最大并发工作线程数 深入理解IIS的多线程工作机制你真的了解:IIS连接数、IIS并发连接数、IIS最大并发工作线程数、应用程序池的队列长度、应用程序池的最大工作进程数 吗? - 爱码网

3. Nginx查看并发连接数的2种方法

4. windows如何要查看IIS连接数