|
楼主 |
发表于 2008-7-13 23:29:20
|
显示全部楼层
楼上正解,果然是solairs本身的限制,默认情况下rlim_fd_cur=256,rlim_fd_max=1024 普通用户可以通过ulimit -n 1024将默认的256改为1024,在有root权限下可以通过修改/etc/system中的设置,如我修改的参数为
set rlim_fd_cur=20480
set rlim_fd_max=30000
set tcp:tcp_conn_hash_size=32768
这样很容易实现将近2万个并发连接。
在具体实现的过程中可能也要修改tcp_conn_hash_size修改,以下是solaris9中需要设置原因
tcp_conn_hash_size(Solaris 9 发行版)
在Solaris 10 发行版中,删除了此参数。
说明控制TCP 模块中用于TCP 连接的散列表的大小。
数据类型带符号整数
缺省值512
范围512 到1,073,741,824
含义值应该是2 的幂。
是否为动态否。只能在引导系统时更改此参数。
验证如果将此参数设置为不是2 的幂的值,则会向上舍入为最接近2 的幂的数。
何时更改如果系统始终具有数万个TCP 连接,请相应地增大该值。使用缺省值时,
TCP 最多可以执行数千个活动连接。请注意,增加散列表大小意味着占用
更多内存,因此,请设置适当的值以免造成不必要的内存浪费。
承诺级别不稳定
调整TCP的参数,等待时间间隔tcp-time-wait-interval建议设置为60000ms: /usr/sbin/ndd ?set /dev/tcp tcp_time_wait_interval 60000;
其他参数调整如下:
tcp_xmit_hiwat/tcp_recv_hiwat 131072
tcp_conn_req_max_q/tcp_conn_req_max_q0 16384
调整一个进程打开的文件描述符的数量:软限制和硬限制以及散列表的大小,修改/etc/system文件:
set tcp:tcp_conn_hash_size=32768
set rlim_fd_cur=8192
set rlim_fd_max=8192 |
|