环境:win+虚拟机
1、项目部署
2、nginx配置
3、编写jmeter脚本
4、发送请求
以上,通过请求及项目访问都没有问题
但是将jmeter脚本放到linux上分布式执行时,出现100%错误
下面开始调查问题,为什么本地win访问成功,但是同一局域网的同台电脑上虚拟机linux访问失败呢?
先排除并发导致的问题,将线程和时间调小,调短,发现还是100%错误,查看服务,正在运行状态,说明不是压力太大,导致的100%错误
此时想单独请求查看返回结果,推荐使用postman可以做请求转换,转换为curl 请求
在linux上发送curl请求时,请求发现404错误,404是请求没有发过去
由于项目是自己配置的,没有走公网,所以,emm,好像jmeter压测机没有配置hosts,配置hosts ,重启
ping nginx ip,可以ping通,ping 域名,也可以ping通【此处有坑】
ping 可以通啊,感觉curl 请求 应该没啥大问题,结果当头一棒,还是返回404,查看nginx配置,没有问题【如果有问题,本机win通过域名请求或者访问项目时就不会通过】
查看resolv.conf ,emm好像刚才ping 域名走的是公网,而非局域网,注释掉公网配置nameserver,重启网卡服务
再次ping 域名,查看返回ip是局域网ip,好现在基本可以确定是ping 域名时,访问了外网的ip
百度搜索,如何修改linux 的域名解析的先后顺序,打开/etc/nsswitch.conf 文件,在hosts行看到,是优先解析dns,然后再解析hosts文件的,所以即便配置了hosts,请求还是404
修改顺序,重启网卡,问题解决