我使用PHP-FPM运行Ubuntu 10.04 nginxnetworking服务器。 它有512MB的总内存(256MB交换)。 启动PHP-FPM进程( /etc/init.d/php5-fpm start )之后,它为大约5个孩子使用了一个可接受的〜100MB。 但是这个过程突然膨胀到了400MB。 这里是我的服务器使用PHP-FPM的内存使用情况的图表。 这里是我的PHP进程内存使用( ps aux | grep php ) 我保守地设置了我的PHP-FPMconfiguration: pm = static和pm.max_children = 5 。 我只运行几个WordPress的博客,我没有那么多的访问者。 我如何控制PHP-FPM进程的内存使用情况,使其不会占用我的服务器?
我运行的是具有1.2 GHz CPU和2.4 GB RAM的CentOS 6 64位服务器。 服务器运行nginx和php-fpm与APC扩展和mysql。 几个星期前,服务器开始不断地在HTTP请求上抛出500个错误; Google WMT每天报告抓取错误中的每天450个服务器错误。 如果你正在浏览网站,每3-4页左右就会出现一个错误。 这是如何configurationphp-fpm: pm = dynamic pm.max_children = 45 pm.start_servers = 15 pm.min_spare_servers = 5 pm.max_spare_servers = 15 pm.max_requests = 1000 在检查我在php-fpm错误日志中发现的日志之后,发现这些是最常见的两个错误: ERROR: fork() failed: Cannot allocate memory (12) WARNING: [pool www] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, […]
我正在运行一个512MB,我有很多内存问题。 我认为是由于我的configuration。 root@s1:~# free -m total used free shared buffers cached Mem: 1024 1022 1 0 0 0 -/+ buffers/cache: 1022 1 Swap: 0 0 0 root@s1:~# ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 23760 1756 ? Ss 15:33 0:00 init root 1086 0.0 0.0 […]
我在1GB的单核VPS上运行Nginx 1.5.1和PHP-FPM(PHP 5.3.26)的Drupal 6,SSD存储上有3GB的交换空间。 我刚刚从共享主机切换到这个非托pipe的VPS,因为我的网站变得太重了,所以我仍然在学习绳索。 我有很高的stream量,我没有真正注意到,但谷歌Adsense通常每天接近3万页的浏览量。 我通常有50到80个经过身份validation的用户login,另外还有几百个匿名用户在任何特定时间点击Boost静态HTMLcaching。 我最多configuration了10个PHP-FPMsubprocess。 我正在使用“ondemand”PHP-FPM进程pipe理器。 我偶尔遇到一个很难debugging的错误,因为它看起来是随机的。 用户可能有30多个故意的post,其中1个被复制。 我configuration了它,所以后button被禁用后,第一次点击,所以这不是双击的结果。 实际上,当我发布的时候,它甚至发生在我身上。 双职位发生在几秒钟内。 我检查了日志文件,并且重复的post似乎总是对应于nginx的POST错误: recv() failed (104: Connection reset by peer) while reading response header from upstream 。 而这个事件似乎涉及index.php和PHP-FPM工作进程的后续SIGTERM执行超时错误的PHP-FPM错误。 以下是nginx访问和错误日志以及PHP-FPM错误日志: nginx_acess.log文件: 1.2.3.4 – – [02/Jul/2013:12:34:34 -0500] "POST /comment/reply/22802/420734?quote=1 HTTP/1.1" 302 5 "http://example.com/comment/reply/22802/420734?quote=1" "Mozilla/5.0 (X11; Linux i686; rv:21.0) Gecko/20100101 Firefox/21.0" 1.2.3.4 – – [02/Jul/2013:12:34:34 -0500] […]
我有一个干净的Centos 6.4(x64)最小版本安装(完全更新)。 一旦操作系统安装完成,我按照这个相对简单的指南设置我的FTP: http : //www.krizna.com/centos/how-to-configure-ftp-server-on-centos-6/ SELinux is disabled. anonymous_enable=NO (vsFTPD Config) chroot_local_user=YES (vsFTPD Config) 而不是根据/ ftp / [username](根据指南)创build一个linux本地用户,我select使用/ home / [username]的标准位置,其中[username]是服务器 (在我的设置中) 我testing了我的FTP服务器,并安装并正常运行。 所以我login到FTP并创build了一个名为“public_html”的文件夹,然后用<?php phpinfo(); ?>在其中创build了一个index.php文件<?php phpinfo(); ?> <?php phpinfo(); ?>代码在里面。 (所以完整path是:/home/server/public_html/index.php) 然后,我安装了nginx&php-fpm,并按顺序为每个configuration文件创build了下列configuration文件。 /etc/php-fpm.d/server.conf (我的本地nix acc:server的php-fpm池): [server] listen = '/var/run/php-fcgi-server.sock' listen.allowed_clients = 127.0.0.1 user = server group = server pm = static pm.max_children = […]
我从Apache更改为Nginx,现在我有一些问题。 当我尝试访问任何文件夹,例如http://devserver/monitor/web ,我有一个Symfony项目,我得到404错误 当我尝试访问http://devserver我一直得到这个消息File not found. 这就是我的/etc/nginx/conf.d/default.conf文件的样子: server { listen 80; server_name devserver; location / { root /var/www/html; index index.php; } error_page 500 502 503 504 /50x.html; location = /50x.html { root /usr/share/nginx/html; } # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 location ~ \.php$ { root html; fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; […]
我们正在使用Nginx和PHP-FPM在Ubuntu 14.04上运行Symfony应用程序 问题在于,单个PHP FPM偶尔会挂在我们的生产服务器上。 我有状态页面的输出: pid: 13416 state: Finishing start time: 08/Sep/2014:12:35:29 +1000 start since: 10548 requests: 3 request duration: 158138427297 request method: GET request URI: /app.php?searchText=Search+term&page=2 content length: 0 user: – script: /var/projects/site_path/app.php last request cpu: 0.00 last request memory: 0 我不明白为什么这个过程是悬而未决的。 如果我把这个过程简单化一下就可以了: # strace -p 13416 gettimeofday({1410154710, 385743}, NULL) = 0 我已经检查了Nginx的访问日志,并匹配请求和请求是好的,它返回一个200,没有错误可以复制使用该url)。 任何帮助将不胜感激 […]
试图弄清楚这一点非常困难。 我已经把我的网站从另一个平台更改为Joomla,现在Nginx无法处理旧的url。 我的老url是这样的: example.com/home.php example.com/contact-us.php 我的新Joomla SEF的Url是这样的: example.com/home example.com/contact-us 根据Joomla指南,我有以下的Nginxconfiguration: location / { try_files $uri $uri/ /index.php?$args; } # Process PHP location ~ \.php$ { try_files $uri =404; fastcgi_split_path_info ^(.+\.php)(/.+)$; fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; include fastcgi_params; } 我想让Nginx把这些旧的URL传给Joomla来处理它。 现在发生的事情是,Nginx将这些旧的url作为php文件处理,然后向我展示这个No input file specified. 错误。 然后,我改变了PHP块内的try_files为try_files $uri /index.php?$args; 所以我的Nginxconfiguration如下所示: location / { try_files $uri […]
在php5-fpm状态页面上,阻止我的服务器accept()新插槽足够快的瓶颈是什么? pool: www process manager: static start time: 20/Jan/2015:16:37:18 +0000 start since: 176705 accepted conn: 903749 listen queue: 0 max listen queue: 129 listen queue len: 128 idle processes: 59 active processes: 69 total processes: 128 max active processes: 128 max children reached: 0 正如你所看到的,我已经到达了我的监听队列,而且这经常发生。 我理解监听队列背后的基本逻辑,这里详细介绍: php-fpm状态页面:本报告中的“队列”项目是什么? 我意识到我应该增加队列长度,我会这样做的。 不过,我的问题是, 为什么我的听众队伍已经填满了, 为什么要阻止它填满呢? 我假设如果有大量积压的积压,那么肯定会有一些不“保持”的东西? 这是一个CPU瓶颈/负载问题,它不能够accept()足够快?
我在SELINUX上遇到了一些问题。 当试图访问我的网站时,我得到了来自nginx的403禁止,服务器popup一个错误,并说使用grep NGINX /var/log/audit/audit.log | audit2allow -M mypol我做了,但是, 当试图加载页面,现在说拒绝访问,并要求使用命令grep PHP-FPM /var/log/audit/audit.log | audit2allow -M mypol,当我这样做,它然后回到403禁止访问,并要求我再次使用第一个命令。 就好像grep NGINX覆盖了php-fpm和反之。 如何解决这个问题,而不禁用selinux? 我有权访问服务器上的gnome桌面,SELinux安全警报告诉我使用这些命令来解决问题,第一个命令确实解决了这个问题,但是却引发了另一个问题,当使用第二个命令时,它会覆盖第一个命令并返回到一个方。 我知道,如果我禁用selinux它将工作,但它是不安全的,把服务器的风险。 谢谢。