如何确定 linux 内的 php nginx mysql 进程是否运转正常

如何确定 linux 内的 php nginx mysql 进程是否运转正常,第1张

1 php 的测试:

使用 yum 命令安装 php

yum install php

然后浏览器访问服务器 IP:

2 nginx 的测试:

进入 nginx 的安装目录 执行 /nginx

然后查看有没有 nginx 进程被启动

[root@localhost sbin]# ps -ef | grep nginx

3 mysql 的测试:

进入 mysql 的安装目录 执行 /mysql -uroot

可以进入 mysql 命令行:

保证空闲进程数最大值,如果空闲进程大于此值,此进行清理
pmmax_requests = 1000
#设置每个子进程重生之前服务的请求数 对于可能存在内存泄漏的第三方模块来说是非常有用的我觉得后盾人的视频还不错,你可以参考下,希望对你有用

php作为排名top2 互联网开发工具,非常流行,可以参考:中国最大的25个网站采用技术选型方案

php这个名称实际上有两层含义

直接定义:

php-fpm从php533开始已经进入到php源代码包,之前是作为patch存在的

很少人会去读php本身源代码,我6年前解决php内存泄露问题的时候做了些研究,最近再查看了一番,发现php的开发者很有诚意,这是一款非常出色的服务器软件,支持如下

在linux服务器上,如果不设置 eventsmechanism ,那么默认就是采用epoll,所以

php-fpm的IO模型&并发处理能力和nginx是完全一致

nginx以性能卓越闻名,大部分程序员都认为php效率低下,看了源代码,才知道这是传奇啊

在高性能部署的时候,大家往往会针对性的优化nginx 。我自己之前部署php程序也犯了错误,8G内存的server,php-fpm的max children都会设置128+,现在看来太多了,参考nginx的部署:

php-fpm配置为 3倍 cpu core number就可以了

php-fpm稳定性比nginx稍差 这是因为php-fpm内置了一个php解析器,php-fpm进程就和php程序捆绑了,如果php脚本写得不好,有死循环或者阻塞在某个远端资源上,会拖累加载它的php-fpm进程

而nginx和后端应用服务器之间通过网络连接,可以设置timeout,不容易堵死的

php-fpm的fastcgi是短连接 我原以为是长连接的,看了代码才知道也是短连接,处理一个request就关闭掉

php-fpm接口采用fastcgi 非常遗憾,php-fpm和fastcgi完全绑定了,无法独立使用 。只能部署在支持>在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?

PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP533后已经成为了PHP的标配。

有小伙伴要问了,FastCGI又是什么鬼?CGI程序又叫做“通用网关接口”,就是让Web服务器和你的应用程序进行交互的一个接口。就像nginx中需要配置的fastcgi_pass,一般我们会使用127001:9000或者unix:/tmp/php-cgisock来配置这个参数。它的意思就是告诉nginx,过来的请求使用tcp:9000端口的监听程序来处理或者使用unix/socket来处理。它们都是指向的PHP运行程序。

再说得通俗一点,我们运行php脚本用的是

php-fpm就相当于是这个php命令。nginx通过fastcgi_pass来运行php $nginx_root(nginx配置文件中网站根目录root配置)下的indexphp。所以,如果你用的是python或者其他什么语言,都可以用它们的cgi程序来让nginx调用。

FastCGI和CGI又有什么不同呢?FastCGI是启动一个socket接口,服务器应用不需要自己去运行php,只需要向这个socket接口提交请求就可以了。

php-fpm在编译php时需要添加--enable-fpm。一些通用的集成安装包如lnmp、phpStudy等都会默认编译并使用php-fpm,毕竟是标配。

上文中说过nginx可以使用127001:9000和unix:/tmp/php-cgisock这两种方式来调用php-fpm。它们有什么区别呢?

前者,一般带9000端口号的,是tcp形式的调用。也就是php-fpm启动了一个监听进程对9000端口进行监听。它会调起一个tcp/ip服务,nginx在调用的时候会走一次tcp请求流程,也就是3次握手4次挥手,会走到网络七层中的第四层传输层。相对来说这种方式性能会稍差一点,启动php-fpm后使用nestat查看端口中会出现9000端口的占用。

后者,使用的是unix套接字socket服务,通过sock文件来交换信息,性能相对好一些,因为它没有tcp连接过程,也不会有9000端口的占用。

对于高负载大访问量的网站还是推荐使用unix方式,对于普通小网站来说,无所谓使用哪个都可以,tcp方式反而更容易配置和理解,也是php-fpmconf中默认的监听方式。

php-fpmconf配置中的listen属性用来配置监听,这里的配置要和nginx中的一致,使用tcp的就监听127001:9000,使用unix的就设置成/tmp/php-cgi-56sock。

以下内容摘自官方文档:

===========

各自媒体平台均可搜索硬核项目经理

开启php的coredump输出,修改ulimit -c就可以了,但是很多情况下,会提示权利受限,无法修改
[fukun@101629xxx]$ ulimit -a
core file size (blocks, -c) 0
data seg size (kbytes, -d) unlimited
scheduling priority (-e) 0
file size (blocks, -f) unlimited
pending signals (-i) 30678
max locked memory (kbytes, -l) 64
max memory size (kbytes, -m) unlimited
open files (-n) 32768
pipe size (512 bytes, -p) 8
POSIX message queues (bytes, -q) 819200
real-time priority (-r) 0
stack size (kbytes, -s) 10240
cpu time (seconds, -t) unlimited
max user processes (-u) 1024
virtual memory (kbytes, -v) unlimited
file locks (-x) unlimited
$ ulimit -c unlimited
-bash: ulimit: core file size: cannot modify limit: Operation not permitted
解决方案:
1检查配置
看看shell配置里有没有 ulimit -c 0 这种类似的关闭的 *** 作,例如
$HOME/bash_profile 或者 $HOME/bashrc 之类的,如果有,注释掉。
#
# Do not produce core dumps
#
# ulimit -c 0
2 全局coredump开启
使用root用户,修改 /etc/security/limitsconf
# /etc/security/limitsconf
#
# Each line describes a limit for a user in the form:
#
# <domain> <type> <item> <value>
#
soft core unlimited
3退出并从新登录shell,修改配置
ssh fukun@101629xxx
[fukun@101629xxx]$ ulimit
-c
0
先切换成root用户进行设置
su -
ulimit -c unlimited
ulimit -c
unlimited
然后切换回自己的用户进行设置
su - fukun
ulimit -c unlimited
ulimit -c
unlimited
以上3步有可能不是必须的,但是只要按这个步骤来,肯定能设置成功,在其它方法设置不成功的时候,按这个步骤来试试把。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/yw/13380745.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-07-25
下一篇 2023-07-25

发表评论

登录后才能评论

评论列表(0条)

保存