JVM的调优案例03
外部命令导致系统缓慢
问题
一个数字校园应用系统,做并发压力测试时发现请求响应时间比较慢
原因
Java程序中Runtme.getRuntime().exec()来执行外部的shell命令,fork创建了新的进程,系统的消耗大,处理器和内存的负担大
解决
去掉调用外部的shell脚本,改用Java的API来获取系统信息
服务器虚拟机进程崩溃
问题
一个基于B/S的MISS系统频繁出现虚拟机进程自动关闭的现象
原因
异步调用web服务,但是因为两边的服务速度不完全对等,时间长积累了未调用完成的web服务,导致等待线程和Socket连接多到超过虚拟机的承受能力,导致虚拟机进程崩溃
解决
将异步调用改为 生产者/消费者的MQ后系统正常
网友评论