博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[编织消息框架][优化系统]突破连接上限(上)
阅读量:4699 次
发布时间:2019-06-09

本文共 2014 字,大约阅读时间需要 6 分钟。

把测试代码ServerAio.class,ClientAio.class打包成jar,丢给linux系统跑server,window跑client

 

其中添加两个shell文件,因为原系统装有java6,建立个sh不同版本java共存

java8.sh

/down/jdk1.8.0_131/bin/java $@

systeminfo.sh

echo "系统"head -n 1 /etc/issueecho cpucat /proc/cpuinfo |grep "model name" && cat /proc/cpuinfo |grep "physical id"echo "内存"cat /proc/meminfo |grep MemTotal | awk 'BEGIN{sum=0} !/^d/{sum=$2} END{print "Memtotal is:",sum/1024,"M"}'

 

jdk:

java version "1.8.0_131"

Java(TM) SE Runtime Environment (build 1.8.0_131-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.131-b11, mixed mode)

system:

系统

CentOS release 5.5 (Final)
cpu
model name : Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
model name : Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
model name : Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
model name : Intel(R) Xeon(R) CPU E5606 @ 2.13GHz
内存
Memtotal is: 7983.66 M

首次测试时出现异常:java.io.IOException: Too many open files

./java8.sh -cp testaio.jar com.eyu.onequeue.demo.aio.ServerAio

 

执行:ulimit -a

其中open files 选项允许每个用户打开最大文件数,因为linux是文件资源系统,设备、连接、文件、应用程序等都是以文件形成存在

修改打开文件描述符限制:软限制值要小于或等于硬限制

重启会丢效:ulimit -n 1000000

永久修改vim /etc/security/limits.conf

在最后加入

* soft nofile 1000000
* hard nofile 1000000

* 是所有用户

修改可分配文件句柄限制:这台Linux系统最多允许同时打开(即包含所有用户打开文件数总和)

echo "fs.file-max = 2000000" >>/etc/sysctl.conf

执行生效:sysctl -p

初步测试结果:

  linxu服务端打印:16344

  window开两个client测试还是16344

那到底是client有限制还是server有限制呢?

是jdk问题还是system问题?

我们先排除系统问题:

  在linux跑单个client或两个client.结果服务端支持连接数28232

  window,linux同时跑client.结果服务端支持连接数44578

  结果证明系统对用户程序有限制

./java8.sh -cp testaio.jar com.eyu.onequeue.demo.aio.ClientAio

 

修改网络端口限制

echo "net.ipv4.ip_local_port_range = 1024 65535" >>/etc/sysctl.conf

 

这表明将系统对本地端口范围限制设置为1024~65535之间。请注意,本地端口范围的最小值必须大于或等于1024;而端口范围的最大值则应小于或等于65535。

执行生效:sysctl -p

如不出问题执行结果为64507成功突破,实验证明:系统对tcp端口分配有最大限制,每个client connect tcp随机分配一个端口,最多65535 -1024 - 已使用,对于window默认是1.6W左右,但不知道如何修改

 

不成功则添加

echo "net.ipv4.ip_conntrack_max = 60000" >>/etc/sysctl.conf

这表明系统将对最大跟踪的TCP连接数限制默认为60000请注意,此限制值要尽量小,以节省对内核内存的占用。

执行生效:sysctl -p

 

转载于:https://www.cnblogs.com/solq111/p/6747305.html

你可能感兴趣的文章
Stanford Local Programming Contest 2011
查看>>
Sql server锁,独占锁,共享锁,更新锁,乐观锁,悲观锁
查看>>
关于javascript dom扩展:Selector API
查看>>
多线程中,NSOperationQueue和GCD的区别
查看>>
python生成.exe文件
查看>>
STM32,你了解多少?(转载)
查看>>
用anaconda保证64位和32位的python共存
查看>>
cPanel设置自定义404错误页
查看>>
16.垃圾最小化
查看>>
ROS time stamp and sync
查看>>
将 Shiro 作为应用的权限基础 三:基于注解实现的授权认证过程
查看>>
遍历聚合对象中的元素——迭代器模式(四)
查看>>
Ehab and subtraction(思维题)
查看>>
Codeforces Round 56-C. Mishka and the Last Exam(思维+贪心)
查看>>
统计汉字
查看>>
使用JavaScript重定向URL参数
查看>>
Tomcat系列(5)——Tomcat配置详细部分
查看>>
python生成器
查看>>
Mybatis 面试题
查看>>
Oracle入门《Oracle介绍》第一章1-4 Oracle 用户管理
查看>>