关于net.ipv4.ip_local_port_range的坑

今天压力测试某服务时发现一个特别诡异的问题,redis-cli连接后端redis-server,客户端所在的服务器只能建立28232个连接,然后就返回errorno = 1,然后更奇葩的是系统负载直线上升到idle=0

因为用的是虚拟机,一直怀疑虚拟机是共用宿主机的本地端口,但咨询了系统的同学说,这个没有问题,再加上每次都是整好这个数,觉得必有蹊跷,决定做如下两个测试:

1.用多台服务器的客户端压测redis-server,redis连接数只能到5W——redis中设置了maxclients,修改之后,能突破6W

2.用同一台服务器上客户端上压测多redis-server,连接1个server能到28232个连接后,仍然还能连接20000个连接到其他redis

这两个结果推翻了宿主机本地端口限制的怀疑。


到底是为什么呢?继续咨询牛人,提示我们看看ip_local_port_range的参数

cat /proc/sys/net/ipv4/ip_local_port_range

发现是:32768 61000

正好相差28232个!!!

咨询我们的OP,为什么设置这么一个参数?得到的答复是,为了避免一些server程序的listen端口被占用而无法启动。

那为什么没有空闲本地端口idle=0呢?通过查看故障时的监控发现,硬中断变得很多,每秒钟5000+


解决问题中查的几个资料记录下来:

http://www.oschina.net/question/17_31076

https://www.cyberciti.biz/tips/linux-increase-outgoing-network-sockets-range.html

http://blog.chinaunix.net/uid-116213-id-3376727.html

http://www.lenky.info/archives/2013/03/2245

http://blog.csdn.net/bd_zengxinxin/article/details/51781630


同时有一个小小的感悟:如果怀疑他,就亲手去验证他!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 136,316评论 19 139
  • Redis 配置文件示例 注意:想要读取配置文件,Redis的第一个参数必须是文件的路径 ./redis-serv...
    起个名忒难阅读 1,328评论 0 1
  • 名词延伸 通俗的说,域名就相当于一个家庭的门牌号码,别人通过这个号码可以很容易的找到你。如果把IP地址比作一间房子...
    杨大虾阅读 20,735评论 2 56
  • Spring Boot 参考指南 介绍 转载自:https://www.gitbook.com/book/qbgb...
    毛宇鹏阅读 47,227评论 6 342
  • 恩施土司城 欣赏规模最大的吊脚建筑 如果喜欢文化风俗,那么到恩施一定要了解土家族文化了。恩施的土司城是全国土家族吊...
    Shirley唐一泓阅读 169评论 0 0

友情链接更多精彩内容