当前位置:首页 > 教程 > 正文内容

nginx进程太多(nginx的进程)

2023-06-04 03:20:05教程1

nginx的进程

修改的配置文件生效就需要向Nginx的master进程发送信号,具体就是reload与restart信号。

reload --重新加载,reload会重新加载配置文件,Nginx服务不会中断。而且reload时会测试conf语法等,如果出错会rollback用上一次正确配置文件保持正常运行。

nginx主进程

  nginx 更改配置文件后需要重启生效。  

1、更改配置重启nginx:    kill -HUP 主进程号或进程号文件路径  或者使用  cd /usr/local/nginx/sbin  ./nginx -s reload  

2、判断配置文件是否正确:    nginx -t -c /usr/local/nginx/conf/nginx.conf  或者  cd /usr/local/nginx/sbin  ./nginx -t

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的单机最大并发量大概在30万左右。Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好

nginx的进程是哪个

最好找个专业点的来排查一下子。top命令看看到底是哪个进程占用内存多,同时看你当前服务器提供的是哪种服务,如果是nginx这种网页服务,用netstat -anptu查一下连接数,看当前有多少访问。监控平台和top命令看的效果不一样,这个问题也要解决。

nginx进程管理

由于linux的socket监听机制和TCP协议,多个进程无法监听同一个端口,但是具体到nginx,可以多个nginx进程监听到不同端口,通过一个主进程端口做upstream来实现负载均衡,这个有点类似于网络的汇聚,可以设置不同的策略,比如iphash,urlhash或者RR。

nginx的进程有几个

这是由于服务器端的配置出现了状况,平时也很少见到。

具体解决法就是修改配置文件:1、把max_children由之前的10改为现在的30,这样就可以保证有充足的php-cgi进程可以被使用;把request_terminate_timeout由之前的0s改为60s,这样php-cgi进程处理脚本的超时时间就是60秒,可以防止进程都被挂起,提高利用效率。

2、接着再更改nginx的几个配置项,减少FastCGI的请求次数,尽量维持buffers不变:fastcgi_buffers由464k改为2256k;fastcgi_buffer_size由64k改为128K;fastcgi_busy_buffers_size由128K改为256K;fastcgi_temp_file_write_size由128K改为256K。

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是否启动。 推荐使用这种方式。

nginx worker进程功能

nginx从1.9.0开始,新增加了一个stream模块,用来实现四层协议的转发、代理或者负载均衡等。比如在内网有一个mysql服务,想暴露到公网上去使用,就可以通过nginx代理的方式通过nginx来进行内网mysql的访问。

实验环境

nginx1.12.1 : 192.168.1.19

mysql : 192.168.1.20:3306

1:编译或者升级nginx至版本1.9.0以上,编译过程中需带上--with-stream。

# ./configure --prefix=/opt/apps/nginx --with-stream

# make && make install

2:配置stream,定义代理192.168.1.20的3306端口映射为端口2333。

# vi /opt/apps/nginx/conf/nginx.conf

……

……

events {

use epoll;

worker_connections 65535;

}

#stream配置

stream {

server {

listen 2333;

proxy_connect_timeout 1s;

proxy_timeout 3s;

proxy_pass 192.168.1.20:3306;

}

}

http {

……

……

}

3:开启nginx,验证代理是否生效。

image.png

可以看到我们现在可以通过nginx代理的端口访问到内网的mysql服务了。这也直接避免了mysql直接暴露到公网,增加些许的安全。当然,利用stream也可以实现后端服务的负载均衡。

nginx的进程结构

在不启用web服务时,就会关闭nginx

nginx的进程模型

启动:cd /usr/local/nginx/sbin./nginxnginx服务启动后默认的进程号会放在/usr/local/nginx/logs/nginx.pid文件cat nginx.pid 查看进程号关闭:kill -TERM pid 快速停止服务kill -QUIT pid 平缓停止服务kill -9 pid 强制停止服务重启:cd /usr/local/nginx./nginx -HUP pid./nginx -s reload

本网站文章仅供交流学习 ,不作为商用, 版权归属原作者,部分文章推送时未能及时与原作者取得联系,若来源标注错误或侵犯到您的权益烦请告知,我们将立即删除.

本文链接:https://www.xibujisuan.cn/98878402.html