免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 10715 | 回复: 15
打印 上一主题 下一主题

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

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2005-12-12 00:07 |只看该作者 |倒序浏览
我使用的是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

[ 本帖最后由 HonestQiao 于 2005-12-13 14:44 编辑 ]

论坛徽章:
0
2 [报告]
发表于 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-max = 8167

#sysctl -p 马上生效

论坛徽章:
0
3 [报告]
发表于 2005-12-12 12:17 |只看该作者
ulimit -u不行吗

论坛徽章:
0
4 [报告]
发表于 2005-12-12 15:34 |只看该作者
原帖由 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

论坛徽章:
0
5 [报告]
发表于 2005-12-12 15:35 |只看该作者
原帖由 zflfaufa 于 2005-12-12 12:17 发表
ulimit -u不行吗

如果用ulimit更改需要把其加入root的profile里面就行了.

论坛徽章:
62
2016科比退役纪念章
日期:2016-06-28 17:45:06奥兰多魔术
日期:2015-05-04 22:47:40菠菜神灯
日期:2015-05-04 22:35:07菠菜神灯
日期:2015-05-04 22:35:02NBA季后赛大富翁
日期:2015-05-04 22:33:34NBA常规赛纪念章
日期:2015-05-04 22:32:032015年亚洲杯纪念徽章
日期:2015-04-14 16:54:452015年亚洲杯之朝鲜
日期:2015-03-19 23:03:16明尼苏达森林狼
日期:2015-03-16 21:51:152015小元宵徽章
日期:2015-03-06 15:57:202015年迎新春徽章
日期:2015-03-04 09:55:282015年辞旧岁徽章
日期:2015-03-03 16:54:15
6 [报告]
发表于 2005-12-12 15:44 |只看该作者
如果只是个普通服务器,已经并发超过1000,没什么优化意义,加机器吧

论坛徽章:
0
7 [报告]
发表于 2005-12-12 17:20 |只看该作者
[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里面了啊.

论坛徽章:
0
8 [报告]
发表于 2005-12-12 22:21 |只看该作者
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!

[ 本帖最后由 xiaofei104 于 2005-12-12 23:21 编辑 ]

论坛徽章:
0
9 [报告]
发表于 2005-12-12 23:11 |只看该作者
兄弟,能不能说清楚点啊,我英文不好啊,

论坛徽章:
0
10 [报告]
发表于 2005-12-13 14:01 |只看该作者
我也很想知道。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP