Linux 板


LINE

手边有一台Server, 设备大概是16G, 16 Core CPU, 打算拿来建置一台Backend Web Server(只跑PHP), 套件部分使用Nginx(0.8.6)、PHP-fpm, 希望可以达到每秒钟并发数在200~500之间, 实际架设後并使用ApacheBench测试(-n10000 -c200)的结果是, 只要当系统的TIME_WAIT达到6000(net.ipv4.tcp_max_tw_buckets)之後, 伺服器的反应开始下降(使用tshark观察), 并且就卡住了, 最後ab会发出apr_socket_recv: Connection timed out (110)的讯息, 尤其反覆测试後, 在先前的TIME_WAIT释放之前, Server都会处於非常慢的状况, 请问有哪些细节是没有注意到还可以持续优化的吗? 还是这台机器的等级, 没有办法处理这麽高并发的数量? 中间, 有使用ss去观察TIME_WAIT的timer倒数, 发现每次都是从60秒开始倒数, 请问有办法降低这个数值吗? 或者让Nginx的连接在client关闭後, 直接将该资源回收掉吗? 目前一直着眼在TIME_WAIT的问题, 是否我思考的方向有错? 还请有经验的指点迷津, 感谢. kernel参数调整如下, net.core.netdev_max_backlog = 262144 net.core.somaxconn = 262144 net.ipv4.ip_local_port_range = 1024 65000 net.ipv4.tcp_fin_timeout = 30 net.ipv4.tcp_keepalive_time = 1200 net.ipv4.tcp_window_scaling = 0 net.ipv4.tcp_timestamps = 0 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_max_syn_backlog = 8192 net.ipv4.tcp_max_tw_buckets = 6000 net.ipv4.tcp_mem = 786432 10485760 15728640 net.ipv4.tcp_wmem = 4096 10485760 20971520 net.core.wmem_max = 20971520 net.ipv4.tcp_rmem = 4096 10485760 20971520 net.core.rmem_max = 20971520 /etc/limits.conf调整如下, * soft nofile 65535 * hard nofile 65535 Ningx的主要相关设定如下, worker_processes 8; worker_rlimit_nofile 65535; events { use epoll; worker_connections 51200; } PHP-fpm的主要相关设定如下, backlog = 8192 max_children = 256(static) rlimit_files = 65535 -- http://www.myspace.com/soundtrack0220 --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 140.126.4.12
※ 文章网址: http://webptt.com/cn.aspx?n=bbs/Linux/M.1413514682.A.97D.html b60413:转录至看板 PHP 10/17 10:58
1F:→ danny8376: MSL是写死在kernel的 这值除非重新compile不然调不了 10/17 14:33
2F:→ danny8376: 不过可以调整减轻状况 net.ipv4.tcp_tw_recycle 10/17 14:34
3F:→ danny8376: net.ipv4.tcp_tw_reuse 这两个设成 1 10/17 14:34
4F:→ danny8376: 看来已经调整了XD 10/17 14:35
5F:→ danny8376: 然後tcp_max_tw_buckets不该调低 10/17 14:39
6F:→ danny8376: 这会让TIME_WAIT允许数量严重不足 10/17 14:39
7F:→ danny8376: 痾... 说错 tcp_max_tw_buckets 还不够高 10/17 14:43
8F:→ b60413: 有试着将tcp_max_tw_buckets调整到10000 10/17 15:29
9F:→ b60413: 发现伺服器回应的时间变长了, ab还是无法送完一万个请求 10/17 15:29
10F:→ b60413: 并且发送成功的请求数量降低了 10/17 15:30
11F:→ danny8376: 不过我自己-c1000都能正常过-n10000了 10/17 16:04
12F:→ danny8376: 不管kernel还是nginx参数都没调过... 10/17 16:05
13F:→ b60413: 如果是这样的话, 会跟软、硬体防火墙有比较大的关系吗? 10/17 16:10
14F:→ b60413: 已经在网路上查过各式的调整法, 也都实际试过, 一直无解.. 10/17 16:11
15F:→ kenduest: 手上几台商用 web 提供大量连线对外方式,一般作法 10/17 16:13
16F:→ kenduest: 不是一台撑起全部服务,大多会分散提供大量存取 10/17 16:13
17F:→ kenduest: 有考虑虚拟化技术方式分散吗?高档 server 不用这个 10/17 16:13
18F:→ kenduest: 东西其实 cpu 算是相当闲置没有被大量利用到 10/17 16:14
19F:→ kenduest: 虚拟化之後 os 本身这类网路负荷问题也可以得以舒缓 10/17 16:16
20F:→ b60413: 愿意试看看, kenduest可以提供相关简易的资讯吗? 谢谢 10/17 16:20
21F:→ kenduest: 你可以网路上爬文一下,目前 linux 都用 kvm 虚拟化技术 10/17 16:22
22F:→ kenduest: ubuntu or rh-based 等 linux 版本网路上都很多资讯 10/17 16:22
23F:→ kenduest: 不过後续你要搭配其他方式来 loading balance 10/17 16:23
24F:→ kenduest: 跑 bridge 网路架构,透过其他硬体平衡负载器分散存取 10/17 16:23
25F:→ kenduest: 或者是 nat 模式你还要搭配 iptables nat 设定功能 10/17 16:24
26F:→ b60413: 目前是希望可以先将单台伺服器设置好, 才会去做附载平衡 10/17 16:24
27F:→ b60413: 原本以为设备比较好的机器, 应该有办法负载这麽大的请求 10/17 16:24
28F:→ kenduest: 或者是搭配 nginx 的 proxy 方式提供分散到多台虚拟机 10/17 16:25
29F:→ b60413: 所以才希望试看看, 是否可以单纯修改设定就达到一定的成果 10/17 16:25
30F:→ kenduest: 这并非是因为你系统的 cpu or memory 多就可以解决问题 10/17 16:25
31F:→ b60413: 目前测试时, 都是使用Virtual Box创建测试机 10/17 16:27
32F:→ b60413: 请问这算是你说的KVM技术吗? 10/17 16:27
33F:→ kenduest: virtualbox 是一个 vm 实作的软体,商业的 server 服务 10/17 16:30
34F:→ kenduest: 没会去用这个提供实际服务,linux kvm 比较可靠 10/17 16:31
35F:→ danny8376: 楼上... 你用iptables nginx都不重要 10/17 17:39
36F:→ danny8376: 现在问题是他的kernel就是吃不下那连线数 10/17 17:39
37F:→ danny8376: 後端分散了 负责分散的前端连线问题还是在啊 10/17 17:40
38F:→ kenduest: 问个问题,有没有想过是 client 端自己的问题 10/17 18:19
39F:→ kenduest: 若你测试端都是固定一台机器的话,那 client 端也会导致 10/17 18:19
40F:→ kenduest: 因为过多的 TIME_WAIT 会导致无法正常连线存取 10/17 18:21
41F:→ kenduest: 至於平衡负载架构,前端是有所谓瓶颈问题,但是 10/17 18:23
42F:→ kenduest: NAT 那边是另外一个处理单纯自己连线的谕时问题 10/17 18:24
43F:→ kenduest: 分散可以先减低单一台 WEB server 本身 TIME_WAIT 问题 10/17 18:25
44F:→ kenduest: 分散还有其他方式,像是 DNS 分散架构 10/17 18:26
45F:→ kenduest: 所以 dns balance + l4 balancer + multi server 分散 10/17 18:28
46F:→ kenduest: 不过好像与原贴问题已经没很直接关系了 10/17 18:29
47F:→ kenduest: 这篇另外也讨论到相关议题: http://goo.gl/wllY3P 10/17 18:30
48F:推 newsp: ab 自己要打到那麽高也不是件容易的事 10/20 09:44







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:Soft_Job站内搜寻

TOP