AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-100194

BurninLeo's questions

Martin Hope
BurninLeo
Asked: 2018-01-20 00:05:19 +0800 CST

告诉 nginx 在随机“502 Bad Gateway”上使用不同的 PHP 进程

  • 0

在网络服务器上,通常可以很好地与nginxand php-fpm(当前版本 7.0.22,但这主要与版本无关),有时会发生 502 Bad Gateway。这通常意味着:其中一个php-fpm进程已经崩溃,并且nginx没有收到来自所选进程的答复。

我目前的解决方法是不仅要监视php-fpm进程,还要监视 PHP 页面的输出。如果这在 4 分钟内不起作用(两次失败的重试,监视间隔为 2 分钟),monit则将终止所有php-fpm进程并重新启动php-fpm服务。有效,但仍会导致 5 分钟的停机时间(至少对于连接到损坏进程的某些用户而言)或更长时间,因为monit在它观察到 502 Bad Gateway 之前,不妨从一个健全的进程中看到几次答案。

(1) 理想的解决方案是修复任何破坏php-fpm进程的错误。然而,这个错误很少发生,所以我无法找到一些具体的原因。可能是 PHP 脚本中的内存泄漏……我不知道。

(2) 我认为,第二好的选择将涉及来自 的一些合作nginx。如果 webserver 进程可以对 PHP 故障做出反应,它可以 (a) 杀死特别损坏的进程并 (b) 尝试另一个进程,而不是抛出 502 Bad Gatway。

到目前为止,我还没有找到nginx对失败做出反应的选项。谁知道如何实现这一目标?还是有更简单的解决方案,我错过了?

connect() to unix:/run/php/php7.0-fpm.sock failed (11: Resource temporarily unavailable)
ubuntu
  • 1 个回答
  • 666 Views
Martin Hope
BurninLeo
Asked: 2017-12-11 03:49:41 +0800 CST

Duply 在路径前添加 AT (@) (Ubuntu 16)

  • 0

从 Ubuntu 14 更新到 Ubuntu 16 后,duply停止工作 - 或者说继续工作,但将备份文件存储到错误的目录中。

这是双重配置(摘录):

TARGET='file:///mnt/backup/server'
TARGET_USER=''
TARGET_PASS=''

以下是ps -aux备份开始时告诉我的信息:

python2 /usr/bin/duplicity --name duply_server --encrypt-key XXXXXXXX --sign-key XXXXXXXX --verbosity 4 --full-if-older-than 14D --force --exclude-filelist /root/.duply/server/exclude / file://@/mnt/backup/server

请注意文件名(最后一个参数)中的 AT 符号 (@)。当从 运行时/root/,它会导致duplicity创建一个文件夹/root/@/mnt/backup/server来存储备份。我不确定这是否是重复、重复或 python 行为的变化。知道如何解决这个问题并重复完整的文件夹,因为它曾经可以工作吗?

编辑

现在,我认为这是 duply 中的一个错误,它试图根据 ftp 的要求将用户名添加到文件夹中。

我的解决方法是创建一个符号链接/root/@/mnt-> /mnt,但这只不过是一种解决方法。因此,非常感谢您提供更好的想法!

backup
  • 1 个回答
  • 18 Views
Martin Hope
BurninLeo
Asked: 2015-03-26 03:52:04 +0800 CST

PHP-FPM - 预启动过程的问题

  • 1

我的网络服务器使用 PHP-FPM 运行 NGINX。在(我猜)更新之后,服务 php5-fpm 停止工作并拒绝重新启动/启动 - 即使在重新启动后也是如此。由于另一个网络服务器执行相同的更新并且仍然有效,因此更新可能不是原因。

> sudo service php5-fpm start
start: Job failed to start
> sudo service php5-fpm status
php5-fpm stop/waiting

> cat /proc/version
Linux version 3.13.0-48-generic (buildd@orlo) (gcc version 4.8.2 (Ubuntu 4.8.2-19ubuntu1) ) #80-Ubuntu SMP Thu Mar 12 11:16:15 UTC 2015

/var/log/syslog说_

kernel: [  131.844584] init: Failed to spawn php5-fpm pre-start process: unable to execute: No such file or directory

并且 . 中没有相关条目/var/log/php5-fpm.log或任何其他文件/var/log/。

恐怕,我缺乏启动前流程的背景知识。因此,我不知道从哪里开始......有什么想法吗?谢谢!

ubuntu
  • 1 个回答
  • 1911 Views
Martin Hope
BurninLeo
Asked: 2013-07-30 04:13:26 +0800 CST

Apache mpm-worker + mod_fcgid + php5_cgi 部分和零星地下降

  • 1

最近,由于内存问题,我从 Apache mpm-prefork(PHP 模块)更改为 mpm-worker(PHP-FPM)。我正在运行一个相当大的 PHP 应用程序,每个 prefork 进程需要 ~20-30M。

总体而言,服务器运行稳定且快速。但是,有时某些用户会在几分钟内无法访问该页面。

工作假设 1(=粗略的想法)是其中一个进程(通常是 2 个,有时最多 5 或 6 个)挂起,并且分配给该进程的每个客户端(例如 50% 的客户端)都会收到一条错误消息。

工作假设 2 是 MaxRequestsPerProcess 负责。在 500 次调用之后,进程尝试关闭,mod_fcgid 不会优雅地终止,并且在进程等待终止时,将进一步的客户端分配给该进程(并被该进程拒绝)。但我无法想象 Apache 会如此愚蠢。

我的问题是:除了一些错误日志中没有任何内容

[warn] mod_fcgid: process ???? graceful kill fail, sending SIGKILL

我已经没有想法在哪里追踪问题了。它偶尔出现,我还没有设法激怒它。服务器性能(CPU/RAM)应该不是问题,因为最近几周整体负载一直在较低的范围内。

感谢您的任何提示。关于我的假设的任何评论(这并没有帮助我找到解决方案,但是 - 我试图禁用 MaxRequestsPerProcess 但还不知道它是否有帮助)?我将非常感谢一些如何追踪这个问题的想法。

阿帕奇配置

    <Directory /var/www/html>
           ...

            # PHP FCGI
            <FilesMatch \.php$>
                    SetHandler fcgid-script
            </FilesMatch>
            Options +ExecCGI
    </Directory>

    <IfModule mod_fcgid.c>
            FcgidWrapper /var/www/php-fcgi-starter .php
            # Allow request up to 33 MB
            FcgidMaxRequestLen 34603008
            FcgidIOTimeout 300
            FcgidBusyTimeout 3600
            # Set 1200 (>1000) for PHP_FCGI_MAX_REQUESTS to avoid problems
            FcgidMaxRequestsPerProcess 1000
    </IfModule>

阿帕奇模块配置

<IfModule mod_fcgid.c>
  AddHandler    fcgid-script .fcgi
  FcgidConnectTimeout 20
  FcgidBusyTimeout 7200

  DefaultMinClassProcessCount 0
  IdleTimeout 600
  IdleScanInterval 60
  MaxProcessCount 20

  MaxRequestsPerProcess 500
  PHP_Fix_Pathinfo_Enable 1
</IfModule>

注意:超时设置为 2 小时,因为很少,应用程序可能需要一些时间来运行(例如,执行数据库优化的每晚 cronjob)。

启动脚本

#!/bin/sh
PHP_FCGI_MAX_REQUESTS=1200
export PHP_FCGI_MAX_REQUESTS

export PHPRC="/etc/php5/cgi"
exec /usr/bin/php5-cgi

#PHP_FCGI_CHILDREN=10
#export PHP_FCGI_CHILDREN

软件包版本

  • 系统:Ubuntu 12.04.2 LTS
  • apache2-mpm-worker:2.2.22-1ubuntu1.4
  • libapache2-mod-fcgid: 1:2.3.6-1.1
  • php5-common: 5.3.10-1ubuntu3.7
apache-2.2
  • 2 个回答
  • 1559 Views
Martin Hope
BurninLeo
Asked: 2013-06-20 03:14:55 +0800 CST

如何找出 Apache 上 FcgidMaxProcesses 的当前设置?

  • 4

在问这个问题时,我觉得它可能很愚蠢 - 但我现在不知道......

如何找出 Apache 上 FcgidMaxProcesses 的当前设置?

背景

我遇到以下错误:mod_fcgid:无法为...应用进程槽

根据mod_fcgid 文档,我的 Apache2 允许 MaxClients=500 并且 FcgidMaxProcesses 的默认配置是 1000 。因此,MaxProcesses 不应成为限制因素 - 但在开始使用设置之前,我更愿意检查当前值。那么……我该怎么办?

谢谢

设置

# apache2.conf
<IfModule mpm_worker_module>
    StartServers             2
    ServerLimit             32
    MinSpareThreads         25
    MaxSpareThreads        100
    ThreadLimit             64
    ThreadsPerChild         50
    MaxClients            1000
    MaxRequestsPerChild  10000
</IfModule>

# VirtualHost configuration
<IfModule mod_fcgid.c>
    FcgidWrapper /var/www/php-fcgi-starter .php
    # Allow request up to 33 MB
    FcgidMaxRequestLen 34603008
    FcgidIOTimeout 300
    FcgidBusyTimeout 3600
</IfModule>

#/var/www/php-fcgi-starter
#!/bin/sh
export PHPRC="/etc/php5/cgi"
exec /usr/bin/php5-cgi
apache-2.2
  • 1 个回答
  • 6703 Views
Martin Hope
BurninLeo
Asked: 2013-06-15 05:57:05 +0800 CST

告诉 Apache 以不同的用户身份创建 error.log/access.log

  • 7

如果您告诉 Apache 使用 CustomLog 文件,Apache2 将在启动时创建这些文件。它总是将它们提供给用户 root:root。我怎样才能改变这种行为?

背景

阿帕奇运行与

SuexecUserGroup www-data www-data

同时,我使用 CustomLog 将其输出通过管道传输到脚本。该脚本从 IP 中删除两个字节,然后写入日志文件。由于您无法告诉 Apache 从 error.log 中省略 IP,因此此管道输出很重要(关于德国隐私法)。

如果这不属于www-data,则脚本无法访问我的自定义日志。

如果我更改所有者,一切正常。

我也知道如何在logrotate重命名并重新创建日志文件时更改文件所有者。

但是,如果我停止 Apache 进程,删除日志文件,然后重新启动 Apache 进程,则会创建属于 root:root 的新文件。

我如何告诉 Apache 在启动时为www-data创建新的无效文件?

apache-2.2
  • 2 个回答
  • 13784 Views
Martin Hope
BurninLeo
Asked: 2012-10-21 13:58:49 +0800 CST

禁用用户“daemon”的 shell (/bin/false)

  • 4

在 Linux 系统上,默认情况下有很多用户:daemon、bin、sys、games 等。

根据我的 /etc/passwd,这些用户中的大多数都分配了一个 shell (/bin/sh),这对我来说似乎有点不安全。我天真的想法会说:只给那些用户一个可以登录服务器的shell。

我的想法错了吗?

如果不是完全错误的话:我可以禁用“daemon”和“www-data”的 shell 而不会产生副作用吗(例如,系统无法启动或 Apache PHP 无法执行系统调用)?

补充:我的发行版是 Debian Squeeze。

感谢您的提示!

linux
  • 2 个回答
  • 3002 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve