[性能]重大苦脑的问题,如果设置Linux最大线程数,网站并发访问量好大

[性能]重大苦脑的问题,如果设置Linux最大线程数,网站并发访问量好大

我使用的是Apache Tomcat/5.0.28,我在server.xml中配置了最大并发连接数,配置如下:


    <Connector port="80"
               maxThreads="999" minSpareThreads="25" maxSpareThreads="999"
               enableLookups="false" redirectPort="8443" acceptCount="999"
               debug="0" connectionTimeout="20000"
               disableUploadTimeout="true" />

并且我在catalina.sh中配置了JAVA_OPTS='-Xms256m -Xmx2500m'最大内存

但是我的网站并发访问量好大,
各位可以看看这篇文章:
http://tech.163.com/05/0711/10/1OCH7J2000091589_3.html

文章中指出:
web server允许的最大连接数还受制于操作系统的内核参数设置,通常Windows是2000个左右,Linux是1000个左右。

也就是说maxThreads最大连接数,不能高于一千,

如果我设置的超过了一千,就报如下错误:

严重: Caught exception (java.lang.OutOfMemoryError: unable to create new native thread) executing org.apache.tomcat.util.net.TcpWorkerThread@d175ff, terminating thread


我用的是Linux 2.6的,我的电脑是4G的内存 2.6的CPU
我用ulimit -u 设置了线程数,为什么还是不行,我设置超过了一千,还是报如上的错误,

[root@server conf]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 999999
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 9999999
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


现在我的网站,可以同一时刻,并发访问量会大于一千,就经常报如下错误:

2005-12-11 12:24:23 org.apache.struts.util.PropertyMessageResources <init>
信息: Initializing, config='org.apache.struts.taglib.logic.LocalStrings', returnNull=true
2005-12-11 12:35:12 org.apache.tomcat.util.threads.ThreadPool logFull
严重: All threads (999) are currently busy, waiting. Increase maxThreads (999) or check the servlet status


有谁能帮我看看,
我现在就是要求,把tomcat的最大并发数设置大点,我的程序都是jsp文件,直接安装的tomcat,大家有什么好的办法,不知道resin并发量如何,受不受操作系统限制,

现在我要如何把Linux的默认的一千个线程,把他设置大点呢?

有谁能帮帮我

我会好好感谢你的,我真的很头脑的事情!!!

QQ:81832527

有多种方法加大Linux的threads数
1、sysctl -w kernel.threads-max=8167 最大threads数
2、echo 8167 > /proc/sys/kernel/threads-max

重启后保存修改值
编辑/etc/sysctl.conf
增加
kernel.threads-max = 8167

#sysctl -p 马上生效
ulimit -u不行吗


QUOTE:
原帖由 lsunx 于 2005-12-12 09:50 发表
有多种方法加大Linux的threads数
1、sysctl -w kernel.threads-max=8167 最大threads数
2、echo 8167 > /proc/sys/kernel/threads-max

重启后保存修改值
编辑/etc/sysctl.conf
增加
kernel.threads- ...

我改过了,但是ulimit -a 看到的并没有生效

执行过sysctp -p和echo 8167 > /proc/sys/kernel/threads-max


QUOTE:
原帖由 zflfaufa 于 2005-12-12 12:17 发表
ulimit -u不行吗

如果用ulimit更改需要把其加入root的profile里面就行了.
如果只是个普通服务器,已经并发超过1000,没什么优化意义,加机器吧
[root@server conf]# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
file size               (blocks, -f) unlimited
pending signals                 (-i) 1024
max locked memory       (kbytes, -l) 32
max memory size         (kbytes, -m) unlimited
open files                      (-n) 999999
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 9999999
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited


我用ulimit -u 已经设置成功了,max user processes              (-u) 9999999我设置的这么大了
我的电脑配置很好的,双CPU2.6G的 4G的内存

我已经用ulimi -u都设置成功了,为什么还要配置sysctp 啊


sysctp 配置了,就一定能够设置server.xml中的maxThreads= 大于一千吗?


我看别人的文档说tomcat在Linux操作系统中,最大连接数,默认只有一千,是不是改这个配置就行,就能让Linux最大连接数超过一千呢?
执行过sysctp -p和echo 8167 > /proc/sys/kernel/threads-max

就行吗?

我用ulimit已经加入到了root的profile里面了啊.
I alway thinks that too many threads hasn't more benefit.because every thread should be need any stack memory space, it may be limited with the machine's physical memory and need to spend a lot of cpu time for the thread status maintenance.

your problem seen that it is limted by jvm heap size.you need to adjust it.

good luck to u!

兄弟,能不能说清楚点啊,我英文不好啊,
我也很想知道。