微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

为服务器大量静态内容调整Nginx / CentOS

我有一个Linux机器64位(centos5.5),2.83GHz的Q9550,6GB内存和一个单一的SATA 500GB驱动器。

在这台机器上,我只能提供缩略图,大部分大小在10kb左右,此时服务器上有大约700万个缩略图我有他们安装在一个/ 25/25/25/25文件夹设置向我推荐。

平均而言,Nginx状态报告显示即时消息服务大约300到400个活动连接。

例:

为什么设置cpu亲和力会使线程运行速度变慢?

EC2 Micro Instance只能使用Nginx服务器处理多less用户

Windows性能分析器时间戳记格式

C硬件计算引擎之上的C#GUI

Nginx + PHP-fpm假设比Apache + mod-PHP快得多

Active connections: 297 server accepts handled requests 1975808 1975808 3457352 Reading: 39 Writing: 8 Waiting: 250

现在的问题是,这台机器的时间非常辛苦,而且由于我的网站比较忙,所以速度越来越慢。 负载总是在8到9左右。

我注意到iostat显示超过100%的实用程序。

Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.20 1.40 99.80 31.14 1221.56 255.49 11.28 114.14 831.81 7.62 99.84 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.20 0.60 100.80 24.00 1192.00 203.20 11.18 113.77 775.42 8.02 100.04 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.20 314.80 44.80 130.00 598.40 3547.20 23.72 113.76 937.18 5.72 100.02 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.00 5.40 56.20 110.80 660.80 937.60 9.57 112.37 518.01 5.99 100.04 Device: rrqm/s wrqm/sr/sw/s rsec/s wsec/s avgrq-sz avgqu-sz await svctm %util sda 0.60 12.40 82.80 41.60 1008.00 432.00 11.58 113.66 852.51 8.04 100.04

下面你可以看到我的一些Nginxconfiguration设置:

worker_processes 6; worker_connections 4096; http { include mime.types; default_type application/octet-stream; #access_log logs/access.log main; sendfile on; #tcp_nopush on; keepalive_timeout 4; gzip on; gzip_http_version 1.1; gzip_vary on; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/html text/css application/json application/x-javascript text/xml application/xml application/xml+RSS text/javascript; gzip_buffers 16 8k; }

我的问题是,除了转移到RAID设置,还有可能SSD,有什么我可以调整/调整,以获得更多的这台机器? 我有一种感觉像我这样的服务器应该能够处理比每秒大约300到400个活动的Nginx连接。

如何在Windows 8.1任务pipe理器中测量磁盘的“平均响应时间”

Python速度32位64位Windows问题

Windows(Vista):在程序快捷方式上设置进程优先级

mmap与malloc:奇怪的performance

比较对象的PowerShell性能和操作VS循环

除了提到的noatime选项@nos,你可能要考虑以下几点:

Nginx中,设置access_log off; – 评论它没有做任何事情; 你需要主动禁用它。

减少工作进程的数量Nginx不会从每个cpu的多个工作人员中受益。

tcp_nodelay on; 将有助于Nginx在“实时”连接上更快地提供文件

尝试玩tcp_nopush 。 我发现最好把它打开,但是YMMV。

将if_modified_since设置为before ; 它将允许Nginx发送304 Not Modified头,而不是重新提供内容

玩open_file_cache设置

减少send_timeout使Nginx可以释放陈旧的客户端连接。

至于你的系统的其余部分:

hdparam设置。 大量的教程来帮助你在线,hdparam的调整将获得最好的你的磁盘。

调整您的socket 性能设置

以降低的定时器频率重新编译内核。 认值为1000赫兹 ,这对于提供视频的台式机非常适用,但对于100-250的值可能更合适的服务器来说并不是那么好

禁用像杯子和蓝牙的服务

不过,我认为最好的性能提升是将Varnish放在你的Nginx服务器前面,并使用它而不是Nginx来提供静态文件。 它将使内存中的“热门”文件Nginx更好,这样就可以使用最少的/没有磁盘的内容

然而主要的是要监控一切 – 不要随你的直觉, 了解你的服务器在做什么以及你的瓶颈在哪里。

在700万个文件中,有多少个被频繁访问? 如果你只看一个10KB的文件,你最多只能在文件系统缓存中存储50万个文件,剩下1GB的RAM用于正在运行的程序和文件系统缓冲区(用于存储目录信息)。

如果你不能增加内存来保存你经常访问的文件,那么你将需要更低的延迟更快的磁盘设置。 移动到15K驱动器将使您的磁盘I / O容量翻倍,但移动到SSD驱动器是最适合您的情况。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐