现在我有一个java程序,打成了jar包后在主机上压测,当jar包起到五十多个的时候导致ssh进不来这个主机,但是我程序也没有使用到多线程之类的,为啥会这样呢(和主机的配置无关)?
一个JAR启动至少250M了,你50多个,内存吃光了。。。所以使用了交换区,机器慢,假死了
1、看一下主要的内存占用
例:发现有一command为abrt-hook-ccpp的进程占用较多CPU和内存资源
关闭abrt-hook-ccpp
systemctl disable abrt-ccpp.service
systemctl status abrt-ccpp.service
2、手动指定分配内存空间
启动时,使用语句:
java -jar -Xmn128m -Xms512m -Xmx512m Demo.jar
压测是这么测的么? 压测不是测试短时间内大量请求的吗? 不知道是不是这样的, 感觉你压测的方式错了, 不知道哈, 我也不是测试专业的
如果是带桌面的,可以考虑提前在主机上打开jvisualvm,监控CPU和内存的使用情况。如果是不带桌面的,可以考虑使用top命令。
其实针对你说的这个问题有可能出现以下几种情况:
1、网络带宽问题,比如你使用了云主机,网络带宽共享或者固定,然后你做的压测是由公网发起;压测工具打满了公网带宽,因此出现ssh进不去;
2、如果是自己的内网,也会存在如1描述问题,可以验证下网络带宽是否打满,如果打满了就会出现你这样子的问题;
3、确认你的主机配置,建议你可以重启机器后先开启一个监控界面,监控机器的指标,比如top命令,JVisualVM 监控机器运行状态;
4、对你的jar包加入运行启动参数,固化你的运行程序使用的机器内存,以确保主机可用;