linux_c_py_php
发表于 2013-02-18 18:29
eastany_op 发表于 2013-02-18 17:55 static/image/common/back.gif
回复 57# linux_c_py_php
不敢说指教。
目前为了获得峰值,连接设置保活,不拆。连接的业务短长都有,暂 ...
我的怀疑是错误的... 单独的线程做accpet也不快, 看样得优化参数了.
linux_c_py_php
发表于 2013-02-18 18:30
chinaunix_wolf 发表于 2013-02-18 18:08 static/image/common/back.gif
回复 9# linux_c_py_phpD状态是不可中断睡眠状态,主要出现在不可中断io操作的时候,比如磁盘写操作、网络 ...
13000那是短连接hsha的, 换长连接也得10万的qps啊.
现在讨论的是LF的长连接和短链接, 量级已经是15万了, 但短连接性能堪忧啊.
sonicling
发表于 2013-02-18 20:43
你先确定测试程序能喂饱你的server吗?D状态没什么担忧的,epoll可以唤醒他们。你可以把epoll_wait的timeout改得尽量短,看是不是D变成R,如果是,那就是server没有被喂饱,都wait在epoll上了。
linux_c_py_php
发表于 2013-02-18 21:18
sonicling 发表于 2013-02-18 20:43 static/image/common/back.gif
你先确定测试程序能喂饱你的server吗?D状态没什么担忧的,epoll可以唤醒他们。你可以把epoll_wait的timeou ...
必须能喂饱- -... 我是单线程的测试程序, 开的越多就该越高呀.
D应该不是epoll_wait吧, epoll_wait应该是S, 我觉得是epoll_ctl引起的D.
linux_c_py_php
发表于 2013-02-18 21:44
本帖最后由 linux_c_py_php 于 2013-02-18 21:45 编辑
我知道原因了, 我创建了2个epoll fd, 创建了2批线程池分别使用其中的1个fd, 创建了一个监听线程跑独立的epoll fd专门accept, 现在qps已经到250000了。
每个核的idle下降了20了,预测可以再多开2个epoll, 把cpu idle跑0,qps到达30万。
linux_c_py_php
发表于 2013-02-18 22:00
本帖最后由 linux_c_py_php 于 2013-02-19 11:05 编辑
单跑echo 36万qps了,idle还剩下10+。
364725 1361195887
365032 1361195888
377951 1361195889
代码见附件,代码还是有缺点的,就是监听线程派发连接是round robin的,根据客户端连接断开情况会导致不均匀,可以通过两种办法(我能想到的)进行负载均衡,大家集思广益。
yulihua49
发表于 2013-02-19 10:36
本帖最后由 yulihua49 于 2013-02-19 10:42 编辑
linux_c_py_php 发表于 2013-02-18 22:00 static/image/common/back.gif
单跑echo 36万qps了,idle还剩下10+。
364725 1361195887
Cpu0:3.3%us, 69.1%sy,0.0%ni,0.3%id,0.0%wa,0.0%hi, 27.2%si,0.0%st
Cpu1:4.3%us, 67.5%sy,0.0%ni,0.0%id,0.0%wa,0.0%hi, 28.1%si,0.0%st
Mem: 8059424k total, 530268k used,7529156k free, 89304k buffers
Swap:8191992k total, 0k used,8191992k free, 71976k cached
PID USER PRNIVIRTRESSHR S %CPU %MEM TIME+COMMAND
15272 sdbc 20 0 96372 7720400 R 11.60.1 1:25.07 server
15273 sdbc 20 0 96372 7720400 R 11.60.1 1:25.00 server
15274 sdbc 20 0 96372 7720400 R 11.60.1 1:25.09 server
15276 sdbc 20 0 96372 7720400 R 11.60.1 1:25.01 server
15270 sdbc 20 0 96372 7720400 R 11.30.1 1:25.11 server
15271 sdbc 20 0 96372 7720400 R 11.30.1 1:25.08 server
15275 sdbc 20 0 96372 7720400 R 11.30.1 1:25.05 server
15277 sdbc 20 0 96372 7720400 R 11.30.1 1:25.05 server
15284 sdbc 20 03912372304 R 11.30.0 1:21.04 client
15279 sdbc 20 03912372304 R 11.00.0 1:21.14 client
15282 sdbc 20 03912372304 R 11.00.0 1:21.40 client
15283 sdbc 20 03912368304 S 11.00.0 1:21.43 client
15285 sdbc 20 03912372304 S 11.00.0 1:21.18 client
15286 sdbc 20 03912368304 R 11.00.0 1:21.21 client
15288 sdbc 20 03912372304 S 11.00.0 1:21.48 client
15280 sdbc 20 03912372304 S 10.60.0 1:20.86 client
15281 sdbc 20 03912372304 R 10.60.0 1:21.18 client
15287 sdbc 20 03912372304 S 10.00.0 1:21.10 client
去掉了printf,系统70%,软中断25%左右,没有D。 qps=79681
linux_c_py_php
发表于 2013-02-19 11:03
yulihua49 发表于 2013-02-19 10:36 static/image/common/back.gif
Cpu0:3.3%us, 69.1%sy,0.0%ni,0.3%id,0.0%wa,0.0%hi, 27.2%si,0.0%st
Cpu1:4.3%us, 6 ...
sys高说明机器压满了, 哈哈, 我忘了看网卡了, 估计40万qps网卡得有100M了.
代码我更新了一下, 昨天代码退出的时候循环++i了, 本来应该++epi, 悲剧.
nizvoo
发表于 2013-02-19 11:49
楼主英武,楼主精力充沛!
yulihua49
发表于 2013-02-19 11:54
本帖最后由 yulihua49 于 2013-02-19 12:49 编辑
我想把客户端移到别的机器上,
怎么看网卡流量?
linux_c_py_php 发表于 2013-02-19 11:03 static/image/common/back.gif
sys高说明机器压满了, 哈哈, 我忘了看网卡了, 估计40万qps网卡得有100M了.
代码我更新了一下, 昨天代 ...
异地测试,太慢了,server CPU idle=70%,LAN=100M 估计是卡到网络上了。
客户端用100个进程,qps=115606:
Cpu0:3.1%us, 46.7%sy,0.0%ni, 32.0%id,0.0%wa,0.0%hi, 18.1%si,0.0%st
Cpu1:3.1%us, 45.0%sy,0.0%ni, 33.5%id,0.0%wa,0.0%hi, 18.5%si,0.0%st
Mem: 8059424k total, 541388k used,7518036k free, 91780k buffers
Swap:8191992k total, 0k used,8191992k free, 79752k cached
PID USER PRNIVIRTRESSHR S %CPU %MEM TIME+COMMAND
15879 sdbc 20 0 96372 7760396 R 15.60.1 2:46.36 server
15886 sdbc 20 0 96372 7760396 R 15.60.1 2:42.04 server
15885 sdbc 20 0 96372 7760396 R 15.30.1 2:43.66 server
15881 sdbc 20 0 96372 7760396 R 14.90.1 2:39.98 server
15882 sdbc 20 0 96372 7760396 R 14.90.1 2:46.74 server
15883 sdbc 20 0 96372 7760396 S 14.90.1 2:43.19 server
15884 sdbc 20 0 96372 7760396 R 14.90.1 2:47.26 server
15880 sdbc 20 0 96372 7760396 R 14.60.1 2:39.49 server
16585 sdbc 20 0 15164 1352948 R0.70.0 0:03.15 top