标签: php-fpm

SOA:在没有 NGINX 的情况下使用 PHP FPM 来提供 Web 服务流量是一个好主意吗?

我正在使用 PHP 开发面向服务的架构。

我团队的一名成员建议,由于每个服务仅提供 HTTP 流量,仅以 JSON 形式提供响应(无静态资产等),因此最好仅运行 FPM 并让负载均衡器将流量直接发送到实例的 IP 地址以及 FPM 暴露的端口。

我以前只听说过 PHP-FPM 和 Nginx 一起运行。所有在线文献都建议同时运行 NGINX 和 FPM,但没有解释原因。NGINX 提供的唯一好处是能够提供静态资产以及 PHP 生成的输出吗?

如果 NGINX 以另一种方式增加价值,它在做什么以及在哪里可以找到支持文档。

php web-services php-fpm

0
推荐指数
1
解决办法
457
查看次数

PHP opcache。100% 命中,100% 使用内存

我的 PHP OPcache 达到 100% 内存使用率

General info
Zend OPcache    7.0.4-dev
PHP 5.5.23-1+deb.sury.org~trusty+2
Server Software nginx/1.6.2
Run Code Online (Sandbox Code Playgroud)

这是我的缓存设置:

zend_extension=opcache.so
opcache.memory_consumption=1024
opcache.max_accelerated_files=50000
opcache.revalidate_freq=180
opcache.consistency_checks=0
Run Code Online (Sandbox Code Playgroud)

还有一些关于缓存命中的更多信息:

total memory: 1024.000MB
used memory: 1010.398MB
free memory: 35.086KB
wasted memory: 13.568MB (1.32%)
number of cached files: 10,724
number of hits: 9,576,431
number of misses: 21,450
blacklist misses: 0
number of cached keys: 12,971
max cached keys: 65,407
Run Code Online (Sandbox Code Playgroud)

opcache 面板视图

我应该担心 100% 内存使用率吗?有人可以用外行术语解释 OPcache 内存使用吗?

服务器有 8GB 内存(Linode)

memory nginx cache php-fpm

0
推荐指数
1
解决办法
9729
查看次数

增加 PHP-FPM 的最大上传文件大小

我在 php.ini 中增加了 params 值:

upload_max_filesize = 10M
post_max_size = 12M
Run Code Online (Sandbox Code Playgroud)

php --ini在控制台命令显示我:

post_max_size => 12M => 12M
upload_max_filesize => 10M => 10M
Run Code Online (Sandbox Code Playgroud)

但无论如何,当我尝试发送大于 1mb 的文件时,我会出错。在 nginx 日志中,我看到:

2017/06/03 12:06:40 [error] 16254#16254: *7 client intended to send too large body: 1778665 bytes
Run Code Online (Sandbox Code Playgroud)

fastcgi_param PHP_VALUE "upload_max_filesize = 10M \n post_max_size=12M" 在 nginx conf 中也没有帮助。

那么,如何增加最大上传文件大小?

php nginx php-fpm

0
推荐指数
2
解决办法
1万
查看次数

为高流量负载配置 Nginx + PHP-FPM

我的 nginx 不断崩溃并在浏览器中报告“坏网关”错误。Nginx 和 PHP-FPM 没有预先配置来处理大流量负载。我必须systemctl restart php7.0-fpm每小时安排一次cron 工作,以确保我的网站在运行时不会停留太久。让我们开始吧。

我从中得到的一些错误/var/log/php7.0-fpm.log

[20-Sep-2017 12:08:21] NOTICE: [pool web3] child 3495 started
[20-Sep-2017 12:08:21] NOTICE: [pool web3] child 2642 exited with code 0 after 499.814492 seconds from start

[20-Sep-2017 12:32:28] WARNING: [pool web3] seems busy (you may need to increase pm.start_servers, or pm.min/max_spare_servers), spawning 8 children, there are 7 idle, and 57 total children
Run Code Online (Sandbox Code Playgroud)

nginx 日志中没有任何内容让我感到意外。如果我让它运行太长时间而不重新启动它 (PHP-FPM),我会收到网关错误。我已经尝试按照教程 3 次调整设置,但仍然不好。现在我可能已经完成了各种设置,但无论哪种方式都行不通。

/etc/nginx/nginx.conf

user www-data;
worker_processes auto;
pid /run/nginx.pid;

worker_rlimit_nofile 100000;

events …
Run Code Online (Sandbox Code Playgroud)

nginx php-fpm

0
推荐指数
1
解决办法
1万
查看次数

PHP-fpm 使用 nginx 很慢,

所以,我一直在我的 docker 容器(nginx 连接到 php-fpm)上运行一些基准测试,它比裸机慢 70 倍以上。与每秒 7,000 个裸机相比,我每秒可以管理 100 个请求。

docker-compose.yml:

version: '3'

services:
    #web
    frontend:
        build:
            context: ./environment/nginx
            dockerfile: ./Dockerfile
        container_name: nginx_software
        restart: always
        ports:
            - 80:80
        volumes:
            - ./environment/nginx/nginx.conf:/etc/nginx/nginx.conf
        links:
            - php
    php:
        build:
            context: ./environment/php
            args:
                version: 7.3-fpm
            dockerfile: ./Dockerfile
        container_name: php_software
        restart: always
        ports:
            - 9000:9000
        volumes:
            - ./api:/var/www/software:cached
        links:
            - mysql
    mysql:
        build:
            context: ./environment/mysql
            args:
                version: 5.7
            dockerfile: ./Dockerfile
        container_name: mysql_software
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        ports:
            - 3306:3306
        volumes:
            - ./environment/mysql/data:/var/lib/mysql
        environment:
            MYSQL_ROOT_PASSWORD: …
Run Code Online (Sandbox Code Playgroud)

ubuntu nginx php-fpm docker

0
推荐指数
1
解决办法
2838
查看次数

PHP move_uploaded_file 失败

这是一个常见问题,但我仔细检查了建议的解决方案,但没有成功。

这些是来自 PHP 的错误:

Warning: move_uploaded_file(images/img01.jpg): failed to open stream: Permission denied in /usr/share/nginx/html/media/test.php on line 28

Warning: move_uploaded_file(): Unable to move '/tmp/phpRvUCVx' to 'images/img01.jpg' in /usr/share/nginx/html/media/test.php on line 28
Run Code Online (Sandbox Code Playgroud)

服务器已经安装了 nginx 和 php 7.3 (php-fpm)

上传文件夹的权限:

 drwxrwxrwx.  2 nginx  nginx       6 Apr  5 03:11 images
Run Code Online (Sandbox Code Playgroud)

信息来自ps aux | grep php

centos   24211  0.0  0.0 112708   980 pts/0    S+   16:01   0:00 grep --color=auto php
root     24674  0.0  0.6 285532 11452 ?        Ss   Apr04   0:04 php-fpm: master process (/etc/opt/remi/php73/php-fpm.conf)
nginx    24675 …
Run Code Online (Sandbox Code Playgroud)

nginx php-fpm centos7 php7

0
推荐指数
1
解决办法
2012
查看次数

为什么 php-fpm 状态有时会返回“服务器繁忙”(503)?

通过访问 /fpm-status 页面,使用工具定期检索 Prometheus 指标。有时,该工具无法访问 /fpm-status 页面,因为 php-fpm 响应“服务器忙”。请稍后再试。' (HTTP 503) 在此期间 php-fpm 仅记录以下内容:

注意:[pool www]状态:记分板已在使用。

我们经营一个非常小的游泳池,只有两个静态的孩子。

pm = static
pm.max_children = 2
Run Code Online (Sandbox Code Playgroud)

对 /fpm-status 的请求可能会排队。但这通常不是问题。对 fpm 池的请求数量也非常低。所以我预计队列不会很长。(当然我不能确定,因为没有收集那段时间的指标)

查看fpm 源代码,我可以看到它无法获取记分牌上的锁。但它不会等待它可用。所以当没有获取到锁时,就会返回错误。但这是否意味着当另一个请求写入记分板(更新状态)时,fpm-status 不可用?

这是什么意思(即我该如何解决这个问题)?

  • 我需要增加 max_children 吗?
  • 接受这种情况定期发生,然后重新尝试收集指标?
  • 还有别的事吗?

php php-fpm

0
推荐指数
1
解决办法
1800
查看次数

您如何设置 PHP 以用户身份作为 CGI 运行?

尝试了很多示例,但似乎没有任何效果。我不想使用 yum/apt-get 我想从源头做所有事情,这样我才能更好地理解。Yum/apt-get 只是欺骗系统,您必须等待版本,而且您没有配置控制。

php fastcgi php-fpm suexec apache-2.2

-3
推荐指数
1
解决办法
216
查看次数

标签 统计

php-fpm ×8

nginx ×5

php ×4

apache-2.2 ×1

cache ×1

centos7 ×1

docker ×1

fastcgi ×1

memory ×1

php7 ×1

suexec ×1

ubuntu ×1

web-services ×1