一. 500
image.png把body 拿出来 放到html
image.png
然后查询资料
1.1.问题描述
异常, 都是 java.net.NoRouteToHostException: Cannot assign requested address.
经网上查资料, 是由于linux分配的客户端连接端口用尽, 无法建立socket连接所致,虽然socket正常关闭,但是端口不是立即释放, 而是处于TIME_WAIT状态, 默认等待60s后才释放。
查看linux支持的客户端连接端口范围, 也就是28232个端口:
cat /proc/sys/net/ipv4/ip_local_port_range
32768 - 61000
解决方法
注意,可能直接编辑文件后无法保存
1.1. 调低端口释放后的等待时间, 默认为60s, 修改为15~30s
echo 30 > /proc/sys/net/ipv4/tcp_fin_timeout
1.2. 修改tcp/ip协议配置, 通过配置/proc/sys/net/ipv4/tcp_tw_resue, 默认为0, 修改为1, 释放TIME_WAIT端口给新连接使用。
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
- 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改为1.
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
- 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改为1.
二. 502
php fpm 无法分配php线程会出现 提升服务器性能
默认设置 httpClinet4
2.1. 查看php-fpm的进程个数
ps -ef |grep "php-fpm"|grep "pool"|wc -l
2.2.查看每个php-fpm占用的内存大小
ps -ylC php-fpm --sort:rss
2.3.查看PHP-FPM在你的机器上的平均内存占用
ps --no-headers -o "rss,cmd" -C php-fpm | awk '{ sum+=$1 } END { printf ("%d%s\n", sum/NR/1024,"M") }'
2.4.查看单个php-fpm进程消耗内存的明细
pmap $(pgrep php-fpm) | less
三. JAVA.NET.SOCKETEXCEPTION: SOCKET CLOSED错误
解决
Socket closed
Non HTTP response code: org.apache.http.NoHttpResponseException (the target server failed to respond)
资料查询:https://wiki.apache.org/jmeter/JMeterSocketClosed
问题原因:在JMeter下,发送http 请求时,一般都是默认选择了use keepAlive(这个是什么?看后面资料),这个是连接协议,JMeter坑就在这里,默认勾选了这个(如果不勾选的话,也不会保存),但其配置JMeter.properties中的时间设置默认却是注销的,也是是说,不会等待,一旦连接空闲,则立马断开了,导致我们压测中出现了事务失败的情形。
image.png
解决:修改httpclient4.idletimeout=<time in ms> 设置成自己觉得合理的时间,一般可设置成10-60s(表示连接空闲10s后才会断开),注意这边单位是ms。修改完成后再次压测,错误不再有了。
image.png
网友评论