jemeter 踩坑日记

2020-05-21  本文已影响0人  dongdog

一. 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

    1. 修改tcp/ip协议配置,快速回收socket资源, 默认为0, 修改为1.
      echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle

二. 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
上一篇 下一篇

猜你喜欢

热点阅读