web优化之nginx优化<三>

web优化之nginx优化详解


    

  这里我们接着web之nginx优化<->继续分析更改默认用户、调整work线程数,并发连接数,文件描述符,CPU的亲和力、hash表中控制大小、开启高效传输模式和函数的重要性。


2.更改nginx的默认用户

  在高标准环境下尽量不使用root,尽量使用普通用户,这样外部人员提权也提不到root用户。

  搭建服务的时候就用普通用户搭建,生产环境下最好不要随便用root用户。

3.调整work线程数,并发连接数,文件描述符,CPU的亲和力

    1) worker_process  调成CPU的核数 x2

  2)并发链接是单个worker的并发链接

vim /application/nginx/conf/nginx.conf
worker_connections 20480; 
Max_client=worker_processes*worker_connections。

 备注:

 并发量太大也不好;但如果前端没有很大的访问量,这里设置多少也没关系,设置为极限即可

  3)配置进程打开的文件数   

    worker_rlimit_nofile 65535;

  4)查CPU的核数   grep "physical id" /proc/cpuinfo

4.调整事件处理模型

   taskset -c 1,2,3 /etc/init.d/mysql start

 备注:

 另外(taskset - retrieve or set a process’s CPU affinity)命令本身也有分配CPU的功能

5.hash表中控制大小

    server_names_hash_max_size和server_names_hash_bucket_size

    调整域名的hash表大小  

    server_names_hash_max_size 512;
    server_names_hash_bucket_size  64;

    参数作用:设置存放域名(server names)的最大哈希表大小

    参数作用:设置存放域名(server names)的最大哈希表的存储桶(bucket)的大小。

              默认值依赖CPU的缓存行。

spacer.gifhttp://nginx.org/en/docs/ngx_core_module.html 

6.开启高效的传输函数

 sendfile on;

  参数作用:激活或者禁用sendfile()功能。

  sendfile()是作用于两个文件描述符之间的数据拷贝函数,这个拷贝操作是在内核上的,被称为“零拷贝”,sendfile()比read和write函数要高效很多,因为,read个write函数要把数据拷贝到应用层在进行操作。相关控制参数还有sendfile_max_chunk,读者可以自行查询。

7.开启高效传输模式

tcp_nopush on;

tcp_nopush参数可以允许把http response header和文件的开始放在一个文件里发布,积极的作用是减少网络报文段的数量。


更多优化见http://7826443.blog.51cto.com/7816443/1705051


    

你可能感兴趣的:(优化,nginx,hash表,高效)