二、nginx模块优化和进程管理

博客:http://lijinhuan.blog.51cto.com/

微博:http://weibo.com/lijinhuanexperience

代码:https://github.com/lijinhuan

一、模块管理

1、nginx是模块化结构,但是它和apache不一样,它的模块不能动态加载或者卸载。

它是一种静态模块系统,如果想要卸载或者安装新的模块,必须重新编译指定

2、编译时./configure --help 查看所有模块;--without--xx表示默认安装,--with--xx可选安装

选择模块安装方式,指定即可,./configure --with-http_stub_status_module --with-http_ssl_module --with-http_gzip_static_module --with-ipv6

3、使用第三方模块,使用--add-module指定

如:--add-module=../ngx_lua-0.9.12 --add-module=../ngx_lua_upstream-0.02

二、进程管理

1、nginx分为master和single两种模式运行;single顾名思义就是单进程方式运行,master是一个master进程加n

个worker进程的方式运行。single模式容错能力差,生产环境不能使用,一般使用master方式运行

2、master进程只能有一个,主要负责全局的初始化和管理worker进程。master可以处理很多信号,例如WINCH,从容关闭

工作进程,HUP重新装载配置等

3、如果你有多个cpu,可以在worker_processes设置和cpu核数一致,不过一般可以设置少一个,因为系统本身也需要cpu处理

4、针对nginx的系统优化

(1)关闭不必要的服务

(2)优化写磁盘操作:nginx每访问完一个文件之后,会对文件的修改时间进行修改,高并发时,对磁盘影响很大

需要关闭该功能,如:/dev/sdb1 /data/ext3 defaults 0 0

(3)资源限制优化:ulimit -a 查看

pending signals                 (-i) 7894

max locked memory       (kbytes, -l) 64

open files                      (-n) 1024

pipe size            (512 bytes, -p) 8

POSIX message queues     (bytes, -q) 819200

real-time priority              (-r) 0

stack size              (kbytes, -s) 8192

max user processes              (-u) 7894

主要是open files 和max user processes 参数,1024和7891在高并发系统中是远远不够的。

可以修改cat /etc/security/limits.conf

如:# End of file

*    -     nofile    512000

(4)优化内核tcp选项:

/etc/sysctl.conf是一个允许你改变正在运行中的Linux系统的接口。它包含一些TCP/IP堆栈和虚拟内存系统的高级选项,可用来控制Linux网络配置,由于/proc/sys/net目录内容的临时性,建议把TCPIP参数的修改添加到/etc/sysctl.conf文件, 然后保存文件,使用命令“/sbin/sysctl –p”使之立即生效。

#为0,表示禁止数据包转发,1表示允许

net.ipv4.ip_forward = 0

#开启IP源地址验证,防止IP地址欺骗,在任何情况下都应开启,默认关闭

net.ipv4.conf.default.rp_filter = 1

# 禁用icmp源路由选项

net.ipv4.conf.default.accept_source_route = 0

#使用sysrq组合键是了解系统目前运行情况,为安全起见设为0关闭

kernel.sysrq = 0

#控制core文件的文件名是否添加pid作为扩展

kernel.core_uses_pid = 1

#表示开启SYN Cookies。当出现SYN等待队列溢出时,启用cookies来处理,可防范少量SYN攻击,默认为0,表示关闭;

net.ipv4.tcp_syncookies = 1

#即队列存放消息的总字节数。

kernel.msgmnb = 65536

#即一个消息的字节大小。目前扩展值为8k,平台一个交易消息为4个字节,不会超过限制。

kernel.msgmax = 65536

#指的是单个共享内存段的最大尺寸,

kernel.shmmax = 68719476736

#所有内存大小

kernel.shmall = 4294967296

net.ipv4.tcp_max_syn_backlog = 4096

net.ipv4.tcp_fin_timeout = 15

net.ipv4.tcp_keepalive_time = 1800

net.ipv4.icmp_echo_ignore_broadcasts = 1

net.ipv4.icmp_ignore_bogus_error_responses = 1

net.ipv4.tcp_retrans_collapse = 0

vm.swappiness = 1

net.ipv4.tcp_rmem = 4096 87380 524288

net.core.rmem_max = 1048576

net.ipv4.tcp_wmem = 4096 65536 524288

net.core.wmem_max = 1048576

net.core.somaxconn = 10240

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.ip_local_port_range = 1025 65000

net.ipv4.tcp_max_tw_buckets = 8192

net.ipv4.tcp_timestamps = 0

vm.oom_kill_allocating_task = 0

vm.overcommit_memory = 0

5、nginx服务器优化

(1)尽量关闭访问日志

(2)使用epoll

(3)配置优化参考:http://down.chinaz.com/server/201202/1615_1.htm

时间: 2024-10-12 00:41:28

二、nginx模块优化和进程管理的相关文章

Linux系统编程——进程管理

引言: 在Linux的内核的五大组成模块中,进程管理模块时非常重要的一部分,它虽然不像内存管理.虚拟文件系统等模块那样复杂,也不像进程间通信模块那样条理化,但作为五大内核模块之一,进程管理对我们理解内核的运作.对于我们以后的编程非常重要.同时,作为五大组成模块中的核心模块,它与其他四个模块都有联系.下面就对进程模块进行想写的介绍,首先要了解进程及其相关的概念.其次介绍进程的创建.切换.撤销等基本操作.除此之外,还给出了Linux内核是如何对进程进行调度管理的.      一.进程及其相关概念 进

Linux内核之进程管理

引言: 在Linux的内核的五大组成模块中,进程管理模块时非常重要的一部分,它虽然不像内存管理.虚拟文件系统等模块那样复杂,也不像进程间通信模块那样条理化,但作为五大内核模块之一,进程管理对我们理解内核的运作.对于我们以后的编程非常重要.同时,作为五大组成模块中的核心模块,它与其他四个模块都有联系.下面就对进程模块进行想写的介绍,首先要了解进程及其相关的概念.其次介绍进程的创建.切换.撤销等基本操作.除此之外,还给出了Linux内核是如何对进程进行调度管理的.      一.进程及其相关概念 进

Nginx优化——连接超时,进程管理,压缩,防盗链(二)

Nginx实现连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费,可设置相应的连接超时参数,实现控制连接访问时间 使用fiddler工具查看connection参数 超时参数 Keepalive_timeout设置连接保持超时时间,一般可只设置该参数,默认为65秒,可根据网站的情况设置,或者关闭,可在http段,server段,或者location段设置Client_header_timeout指定等待客户端发送请求头的超时时间Client_body_timeout设置请求体

Nginx编译参数和进程管理介绍(二)

Nginx编译参数和进程管理介绍(二) 本文介绍两个部分:Nginx的编译参数以及nginx的进程管理.文章总体层次架构如图所示: 一.Nginx编译参数详解 从源代码编译应用程序时通常有三个步骤:配置,编译和安装,十分简单.其中配置步骤十分的重要,这直接决定了你的应用程序具备什么功能.所有编译安装时一定要特别重视配置的选项参数. Nginx的配置选项有如下: 1.Path选项 指定编译安装的各种路径位置. 2.依赖选项 指定需要依赖的库文件. 3.模块选项 指明需要安装模块,安装的模块决定了你

Nginx功能模块以及进程管理

1.      功能 1.1.           功能描述 使用缓存加速反向代理,简单负载均衡和容错: 使用缓存机制加速远程FastCGI服务器的访问: 模块化结构: 基本的HTTP功能: 邮件代理服务器功能: 架构可扩展:非阻塞.时间驱动.一个master多个worker.高度模块化: 主要扮演角色为反向代理.CDN缓存服务 1.2.           基本模块 内核模块.事件驱动模块.邮件模块.服务模块 相关配置参数举例: 内核模块参数env\error_log\master_proce

Nginx模块管理和进程管理

前言 Nginx和Apache一样,同样适用饿模块化管理,但是和Apache"热插拔"(每次添加模块的时候,不需要重新编译,只需要重新载入即可)的方式不同,Nginx每次添加一个模块或删除一个模块的话都需要重新编译才可以适用相应的功能模块. 上一篇(http://blog.csdn.net/xlgen157387/article/details/49908523)已经说了Nginx的主要模块包括core.event.http.mail和misc(杂项),而每一个模块根据需要又有很多模块

Nginx之连接超时,进程管理优化(负载均衡)

Nginx之连接超时 在企业网站中,为了避免同一个客户长时间占用连接,造成资源浪费可设置相应的连接超时参数,实现控制连接访问时间 配置nginx [[email protected] ~]# yum install pcre-devel zlib-devel gcc gcc-c++ -y ##安装环境包 [[email protected] ~]# useradd -M -s /sbin/nologin nginx ##创建程序性用户 [[email protected] ~]# mkdir /

(总结)Nginx使用的php-fpm的两种进程管理方式及优化

PS:前段时间配置php-fpm的时候,无意中发现原来它还有两种进程管理方式.与Apache类似,它的进程数也是可以根据设置分为动态和静态的. php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php.ini一样的配置风格. 在5.2.x版本中,php-fpm.conf中对于进程管理号称是有两种风格,一种是静态(static)的,一种是类似于apache

Nginx使用的php-fpm的两种进程管理方式及优化(转)

php-fpm目前主要又两个分支,分别对应于php-5.2.x的版本和php-5.3.x的版本.在5.2.x的版本中,php-fpm.conf使用的是xml格式,而在新的5.3.x版本中,则是和php.ini一样的配置风格. 在5.2.x版本中,php-fpm.conf中对于进程管理号称是有两种风格,一种是静态(static)的,一种是类似于apache风格(apache-like)的. Process manager settings <value name=”pm”> Sets style