gpt4 book ai didi

php - HHVM fastcgi + Nginx 性能波动

转载 作者:可可西里 更新时间:2023-11-01 06:49:54 26 4
gpt4 key购买 nike

目前,我们开始在生产环境中使用 HHVM,到目前为止,几乎所有结果都非常令人印象深刻。我们的整体事务率相比PHP-FPM with APC有了很大的提升。几乎所有请求都在 500 毫秒以下,但是每两个请求(5 到 10 次左右)导致请求时间为 2 秒甚至 5 秒。

请求的页面似乎没有任何区别,而且一遍又一遍地请求同一页面会在几次请求中触发此行为。

我们使用以下命令行选项在服务器模式下运行 HHVM:

/usr/bin/hhvm --mode server -vServer.Type=fastcgi -vServer.FileSocket=/usr/local/php55/sockets/admin.sock -vPidFile=/var/run/hhvm/admin.pid -vEval.Jit=true -vServer.ThreadCount=24 -vServer.APC.EnableApc=true

我们正在为具有这些相关配置的网络服务器运行 nginx(如果我在这里忘记了一些重要的事情,我很抱歉)。

fastcgi_buffer_size 128k;
fastcgi_buffers 256 16k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_read_timeout 240;
fastcgi_intercept_errors on;

服务器有 128GB 内存和 24 个内核(超线程所以实际上是 12 个)。

我们在 https://github.com/facebook/hhvm/wiki/Runtime-options 上做了一些搜索然而,大多数选项都没有得到很好的解释,所以我不知道它们的作用,并且在生产环境中测试它们有点可怕。

如果这里有人有类似的问题,或者可以为我指明一些 HHVM 选项的方向,我将不胜感激。

使用的 HHVM 版本来自 http://www.hop5.in/yum/el6/

HipHop VM 3.0.1 (rel)
Compiler:
Repo schema: e69de29bb2d1d6434b8b29ae775ad8c2e48c5391

和/etc/hhvm/config.hdf

Log {
Level = Warning
AlwaysLogUnhandledExceptions = true
RuntimeErrorReportingLevel = 8191
}

MySQL {
TypedResults = false
}

我们正在使用 supervisord 来启动 HHVM,所以这里也是 supervisor 配置:

[program:hhvm]
stopasgroup=true
killasgroup=true
command=/usr/bin/hhvm --mode server -vServer.Type=fastcgi -vServer.FileSocket=/usr/local/php55/sockets/admin.sock -vPidFile=/var/run/hhvm/admin.pid -vEval.Jit=true -vServer.ThreadCount=24 -vServer.APC.EnableApc=true
user=admin
stdout_logfile=/var/log/hhvm/admin.log
stderr_logfile=/var/log/hhvm/admin.error.log
directory=/home/admin
umask=000

/etc/hhvm/php.ini 中有一个php.ini 但内容是空的。此外,尝试过的页面都做了一些数据库连接,但这通常是非常小的。如需完整图片,请访问 my.cnf。使用的mysql版本是percona

[mysql]

# CLIENT #
port = 3306
socket = /var/lib/mysql/mysql.sock

[mysqld]

# GENERAL #
user = mysql
default-storage-engine = InnoDB
socket = /var/lib/mysql/mysql.sock
pid-file = /var/lib/mysql/mysql.pid

[mysqld]

# MyISAM #
key-buffer-size = 32M
myisam-recover = FORCE,BACKUP

# SAFETY #
max-allowed-packet = 128M
max-connect-errors = 1000000

# DATA STORAGE #
datadir = /var/lib/mysql/

# BINARY LOGGING #
log-bin = /var/lib/mysql/mysql-bin
expire-logs-days = 14
sync-binlog = 1

# CACHES AND LIMITS #
tmp-table-size = 128M
max-heap-table-size = 256M
query-cache-size = 10G
max-connections = 1000
thread-cache-size = 100
open-files-limit = 65535
table-definition-cache = 4096
table-open-cache = 4000
join-buffer-size = 1M

# INNODB #
innodb-flush-method = O_DIRECT
innodb-log-files-in-group = 2
innodb-log-file-size = 512M
innodb-flush-log-at-trx-commit = 1
innodb-file-per-table = 1
innodb-buffer-pool-size = 73G

# LOGGING #
log-error = /var/lib/mysql/mysql-error.log
log-queries-not-using-indexes = 1
slow-query-log = 1
slow-query-log-file = /var/lib/mysql/mysql-slow.log

Mysql版本:

innodb_version  5.6.17-65.0
protocol_version 10
slave_type_conversions
version 5.6.17-65.0-56-log
version_comment Percona Server (GPL), Release 65.0, Revision 587
version_compile_machine x86_64
version_compile_os Linux

最佳答案

所以我们设法弄清楚了,这是 HHVM 和我们正在使用的应用程序的综合问题。

HHVM 生成相当多的 perf-****.map 文件,还有大量的 sess_ 文件。/tmp 目录中总共有超过 800 万个文件。删除这些问题后,我们的问题就消失了,几乎所有请求的性能都得到了显着提高。此外, session 文件一开始就不应该存在,但这是一个已经解决的问题。

现在我们通过将 -vEval.PerfPidMap 添加到我们的启动参数来禁用 perf- 文件的生成。

关于php - HHVM fastcgi + Nginx 性能波动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24760734/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com