最先排查的原因就应该是网络问题,即外部因素。常见的着手方法是测试网速,这里推荐工具speedtest,当然类似的有很多:
1)安装:
$ wget https:
//raw
.githubusercontent.com
/sivel/speedtest-cli/master/speedtest
.py
$ chmod
a+rx speedtest.py
$
mv
speedtest.py
/usr/local/bin/speedtest
$
chown
root:root
/usr/local/bin/speedtest
2)调用命令测试
$ speedtest
转自:https://blog.csdn.net/Beyond_F4/article/details/80497118
更深层次的网络问题排查可以参见:http://www.cnblogs.com/Security-Darren/p/4700387.html
2. 检查日志
首先检查程序日志,看有哪些异常被抛出,有没有类似内部错误的不正常的异常被抛出;
如果使用tomcat部署,还需检查tomcat的日志。
3. 测试响应时间
如果以上的都没有问题,可以再次测试程序响应时间,注意:主要是为了测试服务响应时间,即服务处理请求构造数据消耗的时间。
通过curl得到http各阶段的响应时间,这可以参考:https://blog.csdn.net/hqzxsc2006/article/details/50547684
#curl -o /dev/null -s -w %{http_code}:%{http_connect}:%{content_type}:%{time_namelookup}:%{time_redirect}:%{time_pretransfer}:%{time_connect}:%{time_starttransfer}:%{time_total}:%{speed_download} www.baidu.com
4. 定位线程
查看内存使用:top、free、ps、cat /proc/meminfo
查看磁盘使用:df -h ,例如日志写完等等
尝试查看定位到具体的线程查看原因:
1) ps -ef | grep java 找出最耗CPU的JAVA进程(一般就是服务进程引起)
2) top -Hp "进程ID" 找出最耗时间的JAVA线程
3) jstack "进程ID" | grep "线程ID"