nginx进程被杀死(nginx主进程被kill会怎么样)
nginx主进程被kill会怎么样
1.
启动Nginx服务--在sbin目录下 启动命令:./nginx 关闭命令:./nginx-sstop和./nginx-squit 刷新配置文件:./nginx-sreload (每次对Nginx的配置文件nginx.conf修改后,都要进行重新加载配置文件)
2.
进程 查看进程ps-ef|grep-ixxxx -i 大概是ignore 是忽略的意思这里是忽略大小写。 杀死进程kill-9xxxx
3.
防火墙 开启防火墙serviceiptablesstart 关闭防火墙serviceiptablesstop 查看防火墙的状态serviceiptablesstatus 永久关闭防火墙chkconfigiptablesoff
4.
启动zookeeper服务--在zookeeper的bin目录下 开启zoo
nginx进程nobody
nginx代理出现403异常,可通过以下几个原因排查:
一、由于启动用户和nginx工作用户不一致所致
1.1查看nginx的启动用户,发现是nobody,而为是用root启动的
命令:ps aux | grep "nginx: worker process" | awk'{print $1}'
1.2将nginx.config的user改为和启动用户一致,
命令:vi conf/nginx.conf
二、缺少index.html或者index.php文件,就是配置文件中index index.html index.htm这行中的指定的文件。
1. server {
2. listen 80;
3. server_name localhost;
4. index index.php index.html;
5. root /data/www/;
6. }
如果在/data/www/下面没有index.php,index.html的时候,直接文件,会报403 forbidden。
三、权限问题,如果nginx没有web目录的操作权限,也会出现403错误。
解决办法:修改web目录的读写权限,或者是把nginx的启动用户改成目录的所属用户,重启Nginx即可解决
1. chmod -R 777 /data
2. chmod -R 777 /data/www/
四、SELinux设置为开启状态(enabled)的原因。
4.1、查看当前selinux的状态。
1. /usr/sbin/sestatus
4.2、将SELINUX=enforcing 修改为 SELINUX=disabled 状态。
1. vi /etc/selinux/config
2. #SELINUX=enforcing
3. SELINUX=disabled
4.3、重启生效。reboot。
1. reboot
nginx进程杀不掉
修改的配置文件生效就需要向Nginx的master进程发送信号,具体就是reload与restart信号。
reload --重新加载,reload会重新加载配置文件,Nginx服务不会中断。而且reload时会测试conf语法等,如果出错会rollback用上一次正确配置文件保持正常运行。
nginx杀掉主进程
刚安装的时候就是没有,其实在启动 nginx 时自动生成的 里面存放的是 当前 nginx 住进程的 ID 号;
所以在配置文件中指定pid
pid /usr/local/webserver/nginx/nginx.pid;
哇这个事情 搞了我好长时间,我以为我装的用问题;
nginx的结束重启一般是通过下面命令来实现的:
kill -QUIT 26000
其中26000是nginx的主进程号。
每次都需要通过ps命令来查询nginx的主进程号,非常麻烦。 在《实战nginx:取代Apache的高性能Web服务器》一书中提到了使用pid文件的方法,不巧的是给的命令漏了些东西,这里给出完整的指令。
pid文件就是一个纯文本文件,里面记录的是进程的pid号。
下面是一个pid文件的内容::26032
nginx的默认pid文件
nginx使用了pid文件来记录master process的pid号,如果编译时没有指定,那它的路径就是:
<prefix/logs/nginx.pid
其中<prefix是nginx的安装路径。
如果你想修改默认的pid文件路径,可以在编译时加入配置。参数如下::
./configure –-pid-path=/data/test/ngx.pid
指定后,默认的pid文件路径就更改为::
/data/test/ngx.pid
如果指定只是路径,没有pid的文件名,那么pid的文件名还是nginx.pid
通过配置文件修改pid
除了使用默认值和通过编译时修改外,还可以通过在nginx的配置文件中修改。如下:
pid /data/test/nginx.pid;
这里修改的值只对使用该配置文件的nginx有效。
用PID文件停止Nginx
假设pid文件路径为/data/logs/nginx.pid
kill –QUIT `cat /data/logs/nginx.pid`
用pid文件重新加载配置文件
nginx进程数配置
Nginx的工作模式很简单,就是采用一个master进程和多个worker工作进程,其中master进程的作用也是很明确的就是负责管理worker进程,同时监听连接请求,当连接请求到来之后将连接放入worker进程中去处理具体的业务请求,比如说http请求。
Nginx能够处理高并发的原因在于对socket的管理方式是异步非阻塞的,使用select/poll/epoll/kqueue 来实现对大量socket描述符的管理,每个worker进程有一个主线程,而没有其他的线程这样的好处就在于不需要进行线程间的切换,这样就节省了资源。
所以总的来说:Nginx能够实现支持高并发的同时运行效率还很低的关键在于整个系统内部只有有限的几个工作进程和一个监听进程,而每个进程内部只有一个主线程,这样就不会引起很多的线程切换,从而降低了系统开销,同时每个线程内部使用异步非阻塞的方式来管理描述符这样就可以管理大量的描述符,当描述符多的时候也只是会占用较多的内存而已,而不会造成占用大量cpu时间。
以上说的就是Nginx的进程模型和事件模型,事件模型中处理的情况主要有三种,分别是网络事件,如HTTP请求等,网络事件使用异步非阻塞模式就可以很好的解决;还有信号,定时器,信号和定时器还不是很明白。
Nginx处理进程间争夺系统资源的方式:也就是进程间存在的惊群现象。
nginx主进程
Linux每个应用运行都会产生一个进程,那么我们就可以通过查看Nginx进程是否存在来判断它是否启动。
1、有时想知道nigix是否在正常运行,需要用linux命令查看nginx运行情况。执行命令:ps -A | grep nginx。 如果返回结果的话,说明有nginx在运行,服务已经启动。如果不怕nginx关闭的话。也可以执行:service nginx restart。 把nginx服务重启,在重启时,也可以看到具体有没有什么地方出错。
2、看端口netstat -ntlp; 看进程ps -ef|grep nginx; 看日志是否更新tail -f access.log。
3、直接查看进程id:ps -C nginx -o pid。 这种直接返回pid的方式比较适合跟其他程序结合使用,比如在shell/python脚本中执行这个命令拿到pid,让后根据pid来判断Nginx是否启动。 推荐使用这种方式。
本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.