nginx性能优化之nginx.conf优化配置

作者的服务器为双核配置,内存就不说了:

以下数据以NGINX做反向代理所做优化

贴贴NGINX核心配置应该修改的参数:

worker_processes?????2;??

worker_cpu_affinity?01?10;

worker_processes 为开启的进程数;一般为CPU的核数。

worker_cpu_affinity 01 10为开启的CPU进行

 

当然,如果观察CPU的资源使用不是很大,可以开启4进程:

worker_processes?????4;??

worker_cpu_affinity?01?10?01?10; ?

请根据自身CPU的使用率来进行调节

2核是 01,四核是0001,8核是00000001,有多少个核,就有几位数,1表示该内核开启,0表示该内核关闭。 worker_processes最多开启8个,8个以上性能提升不会再提升了,而且稳定性变得更低,所以8个进程够用了。 配置完毕后,重启nginx 。

worker_processes: 官方英文版wiki配置说明中的描述如下,个人理解为worker角色的进程个数(nginx启动后有多少个worker处理http请求。master不处理请求,而是根据相应配置文件信息管理worker进程.? ?master进程主要负责对外揽活(即接收客户端的请求),并将活儿合理的分配给多个worker,每个worker进程主要负责干活(处理请求))。 syntax:worker_processes number | auto; default: worker_processes 1; context:main Defines the number of worker processes.

 

接下来是worker_connections

控制每个进程打开的文件的数量,默认使用系统的配置1024为最大值。

测试最大的吞吐量的时候

max clients的公式=worker_processes*worker_connections/4

一般1024的值基本足够,不建议修改过大,作者修改为4096。

不过由于系统限制是1024,所以我们需要修改下LINUX的配置

否则重启NGINX就会报错:

[warn]: 3660#0: 4096?worker_connections are more than open file resource limit: 1024 !!

修改/etc/security/limits.conf文件,

在文件中添加如下行:

* soft noproc 4096
* hard noproc 4096
* soft nofile 4096
* hard nofile 4096

就是限制了任意用户的最大线程数和文件数为65535。 其中*(注意有个空格)为所有用户的打开文件数限制,可用’*’号表示修改所有用户的限制;soft或hard指定要修改软限制还是硬限制;10240则指定了想要修改的新的限制值,即最大打开文件数(请注意软限制值要小于或等于硬限制)。修改完后wq;

 

修改/etc/pam.d/login文件,在文件中添加如下行:

session required /lib/security/pam_limits.so

这是告诉Linux在用户完成系统登录后,应该调用pam_limits.so模块来设置系统对该用户可使用的各种资源数量的最大限制(包括用户可打开的最大文件数限制),而pam_limits.so模块就会从/etc/security/limits.conf文件中读取配置来设置这些限制值。修改完后wq。

修改/etc/rc.local脚本,在脚本中添加如下行:

echo “4096”> /proc/sys/fs/file-max

这是让Linux在启动完成后强行将系统级打开文件数硬限制设置为4096

好了重启下

重新修改nginx.conf

events前面添加:

worker_rlimit_nofile 4096;

限制最大的文件数量

以下为作者完整的nginx.conf

worker_processes 2;
worker_cpu_affinity 01 10;
error_log /var/log/nginx/error.log warn;
pid /var/run/nginx.pid;
worker_rlimit_nofile 4096;
events {
worker_connections 4096;
}
http {
server_tokens off;
include /usr/local/nginx/mime.types;
include /usr/local/nginx/proxy.conf;
include?/usr/local/nginx/gzip.conf;
default_type application/octet-stream;
server_names_hash_bucket_size 128;
client_header_buffer_size 2k;
large_client_header_buffers 4 4k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
fastcgi_buffer_size 64k;
fastcgi_buffers 4 64k;
fastcgi_busy_buffers_size 128k;
fastcgi_temp_file_write_size 256k;

sendfile on;
keepalive_timeout 65;

log_format main ‘$remote_addr – $remote_user [$time_local] “$request” ‘
‘$status $body_bytes_sent “$http_referer” ‘
‘”$http_user_agent” “$http_x_forwarded_for”‘;

access_log /var/log/nginx/access.log main;

#gzip on;
server {
listen 80 default_server;
server_name _;
return 404;
}
include /usr/local/nginx/conf.d/*.conf;
}

 

 

发表评论