请教关于使用nginx 磁盘io高的问题

291 views
Skip to first unread message

lyle...@gmail.com

unread,
Jul 28, 2014, 2:01:28 AM7/28/14
to open...@googlegroups.com
大家好,我想就我公司使用nginx遇到的问题,向大家请教一下

基本情况:
我们的业务使用了nginx proxy cache。单台机器上有7块独立的存储盘,每块盘275G,使用一致性hash将请求分配到7块盘上
目前单台nginx服务的qps在1500左右,单台机器每日网卡incoming流量在300M, outgoing流量在220M左右


目前的问题:
机器的磁盘io写非常的频繁,其中 cpu iowait time 经常达到20%以上,使用iostat查看磁盘io 的 util%指标,有时4-5秒持续维持在100%,而且经常是3-4块盘同时出现。


想请教有什么配置参数可以改善这种情况吗? 比如系统配置参数,io调度等配置
另外有什么工具可以推荐? 能分析到所有的这些写操作中,都是哪些进程在写,操作了哪些文件

另外想了解一下,想深入了解nginx内部各项指标的实时状态(共享内存实时占用情况,lua代码是否有错误,内存是否存在泄露,磁盘io高到底是哪些进程的哪些操作导致等),有哪些工具可以推荐使用? 请问 章亦春 大师的 nginx-systemtap-toolkit能否解决我们的需求。谢谢各位

Lei King

unread,
Jul 28, 2014, 6:02:50 AM7/28/14
to open...@googlegroups.com, lyle...@gmail.com
打开debug应该能看到一些信息的

在 2014年7月28日星期一UTC+8下午2时01分28秒,lyle...@gmail.com写道:

Lucien Li

unread,
Jul 28, 2014, 7:33:16 AM7/28/14
to open...@googlegroups.com, lyle...@gmail.com
proxy_buffering
proxy_max_temp_file_size 0;
跟着二个有关系吗?



在 2014年7月28日星期一UTC+8下午2时01分28秒,lyle...@gmail.com写道:

Yichun Zhang (agentzh)

unread,
Jul 28, 2014, 1:54:14 PM7/28/14
to openresty
Hello!

2014-07-27 23:01 GMT-07:00 lylee1981:
> 目前的问题:
> 机器的磁盘io写非常的频繁,其中 cpu iowait time 经常达到20%以上,使用iostat查看磁盘io 的 util%指标,有时4-5秒持续维持在100%,而且经常是3-4块盘同时出现。
>

你可以使用下面这些工具在线采集关键数据,这样我们就不用猜测和试错了:

https://github.com/openresty/nginx-systemtap-toolkit#sample-bt-off-cpu

https://github.com/openresty/nginx-systemtap-toolkit#sample-bt-vfs
(使用 --latency 选项)

https://github.com/openresty/stapxx#epoll-loop-blocking-distr

最重要的是第一个工具生成的 off-CPU 火焰图。后面两个工具的输出可以作为辅助参考。只需在问题最显著时分析一个典型的 nginx worker 进程就好了。

值得一提的是,如果你使用的是 SSD 盘,请首先确认你确实启用了 TRIM,否则你的盘必然越写越慢,直到无法忍受。

>
> 想请教有什么配置参数可以改善这种情况吗? 比如系统配置参数,io调度等配置
> 另外有什么工具可以推荐? 能分析到所有的这些写操作中,都是哪些进程在写,操作了哪些文件
>

如果你对写操作的流水感兴趣,可以使用 Brendan Gregg 的 opensnoop 工具:

http://www.brendangregg.com/blog/2014-07-25/opensnoop-for-linux.html

> 另外想了解一下,想深入了解nginx内部各项指标的实时状态(共享内存实时占用情况,
> lua代码是否有错误,内存是否存在泄露,磁盘io高到底是哪些进程的哪些操作导致等),
> 有哪些工具可以推荐使用?

实时的内存和 CPU 指标你完全可以在 top 这样的标准工具里清楚地看到。

而 nginx 共享内存相关的细节,可以通过下面这个工具来得到:

https://github.com/openresty/nginx-systemtap-toolkit#ngx-shm

> 请问 章亦春 大师的 nginx-systemtap-toolkit能否解决我们的需求。谢谢各位
>

我有些奇怪为什么你不把 nginx-systemtap-toolkit 项目的 README
快速通读一遍。。。我上面贴的好几个工具的文档链接都指向这个 README :)

Regards,
-agentzh
Reply all
Reply to author
Forward
0 new messages