nginx+php-fpm访问为何时快时慢

原因:

一个测试环境,nginx+php-fpm对外提供服务,测试人员访问的时候出现时快时慢的情况,慢时超过了正常网页的等待打开时间范围。重启nginx php-fpm后恢复,访问几次后又会慢

查找思路:

1,系统负载,磁盘IO

top,查看负载,负载小于1 排除。

vmstat 查看磁盘io   测试环境 io较小,排除。

2,是否有php慢查询程序

打开php-fpm中php慢查询日志

request_slowlog_timeout = 5

slowlog = var/log/slow.log

reload 访问之后无慢查询日志,判断无执行时间比较慢的php程序

检查该配置文件

pm = static

pm.max_children = 300

pm.start_servers = 15

pm.min_spare_servers = 8

pm.max_spare_servers = 48

request_terminate_timeout = 200

排除是pm.max_children  设置过小引起的问题。

3,怀疑mysql有慢查询

网站时快时慢 重启之后打开统一页面较快,排除mysql有慢查询。此时陷入迷茫尴尬之中。

查看nginx配置文件

worker_rlimit_nofile 65535 偶然发现多么熟悉的数字,此处定义了限制打开的文件数量,就联想到ulimit 参数

ulimit -n 果然  没有进行优化,显示默认的1024

echo ‘*  -  nofile  65535‘ >> /etc/security/limits.conf

然后执行下ulimit -HSn 65535

也可以把ulimit -SHn 65535命令加入到/etc/rc.local,然后每次重启生效

文件描述符

文件描述符在形式上是一个非负整数。实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表。当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符。在程序设计中,一些涉及底层的程序编写往往会围绕着文件描述符展开。但是文件描述符这一概念往往只适用于Unix、Linux这样的操作系统。

习惯上,标准输入(standard input)的文件描述符是 0,标准输出(standard output)是 1,标准错误(standard error)是 2。尽管这种习惯并非Unix内核的特性,但是因为一些 shell 和很多应用程序都使用这种习惯,因此,如果内核不遵循这种习惯的话,很多应用程序将不能使用。

调整完之后访问时快时慢的问题解决。

时间: 2024-12-28 09:05:59

nginx+php-fpm访问为何时快时慢的相关文章

打开网页时快时慢

lnmp架构,发现同一个网页打开时快时慢,上下行流量极小,测试中,查看nginx错误日志,发现这么一句“ PHP message: PHP Warning:  file_get_contents(http://url/index.php?url=yoururl/kjtest): failed to open stream: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution in /

深入理解PHP之:Nginx 与 FPM 的工作机制

完全转载(算是一个收藏了) https://zhuanlan.zhihu.com/p/20694204 网络上有很多关于如何配置 Nginx + FPM 的文章,但它们更多从操作的角度出发,告诉我们怎么做,但却没有告诉我们为什么要这么做,本文从 Nginx 与 FPM 的工作机制出发,探讨配置背后的原理,让我们真正理解 Nginx 与 PHP 是如何协同工作的. 要说 Nginx 与 PHP 是如何协同工作的,首先得说 CGI (Common Gateway Interface) 和 FastC

如何配置阿里公共DNS——上网加速、无广告、无劫持、访问网站响应快

我们都知道,我们要能上网,就必须要使用DNS,DNS是域名系统,能够使用户更方便的使用互联网,而不用去记住能够被机器直接读取的IP数串,也叫域名 解析.百度也曾经被黑客攻击过DNS,导致无法访问.DNS作为互联网的入口,越来越受到大家的重视.如此重要的东西,也常常被那些隐藏在角落里的黑客惦 记着,主动攻击每天都在发生着.攻击一旦成功,整个互联网的访问就瘫痪了.所以我们有必要更新我们一贯的DNS服务器解析地址.不过发生什么网上DNS国 际攻击,我们都能通过阿里DNS访问国内网站哦,还等什么~ 公众

Nginx 禁止IP访问

我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行: listen 80 default; 后面的default参数表示这个是默认虚拟主机. Nginx 禁止IP访问这个设置非常有用. 比如别人通过ip或者未知域名访问你的网站的时候,你希望禁止显示任何有效内容,可以给他返回50

Nginx 禁止IP访问 只允许域名访问

今天要在Nginx上设置禁止通过IP访问服务器,只能通过域名访问,这样做是为了避免别人把未备案的域名解析到自己的服务器IP而导致服务器被断网,从网络上搜到以下解决方案 我们在使用的时候会遇到很多的恶意IP攻击,这个时候就要用到Nginx 禁止IP访问了.下面我们就先看看Nginx的默认虚拟主机在用户通过IP访问,或者通过未设置的域名访问(比如有人把他自己的域名指向了你的ip)的时 候生效最关键的一点是,在server的设置里面添加这一行:listen 80 default; 后面的default

certbot在Centos7上配置合法签名证书,实现nginx的https访问

咖菲猫-李常明笔记 公司因之前使用的openssh创建的自签名证书,有一个弊端,就是在某些客户端上不能使用此证书,无法使用https连接,所以,研究了一下certbot 做签名证书! certbot的官网地址: https://certbot.eff.org/ 1.制作证书前的准备: 你需要有一个公网地址,并绑定合法域名 2.开始制作: (1).下载Certbot客户端: wget https://dl.eff.org/certbot-auto (2).下载后,进入下载的目录,添加执行权限 ch

nginx 获取源IP 获取经过N层Nginx转发的访问来源真实IP

1. nginx 配置文件中获取源IP的配置项 proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; #一般的web服务器用这个 X-Real-IP 来获取源IP proxy_set_header x-forwarded-for $proxy_add_x_forwarded_for; #如果nginx 服务器是作为反向代理服务器的,则这个配置项是必须的:否则看不到源IP 2. nginx 代理服务器的模块ngi

nginx 禁止ip访问只允许域名访问

nginx 禁止ip访问只允许域名访问 在nginx 配置文件中,再添加一个server段 server{listen 80 default;return 500;}

mac上nginx静态页面访问403

第一天配置好的nginx可以正常的访问静态页面,第二天通过网络云盘下载的index.html文件之后,再次访问出现了403forbidden的问题. 查看文件的权限: [email protected] 1 hu staff 6351 4 12 21:10 bluePlan.js [email protected] 1 hu staff 113 4 12 21:10 bluePlan.less [email protected] 1 hu staff 1146 4 12 21:19 index.