|  | 
 
 楼主|
发表于 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
 | 
 |