目前我們開始在生產環境中使用HHVM,並且到目前爲止幾乎所有的結果都非常不起眼。與使用APC的PHP-FPM相比,我們的整體交易率大大提高。幾乎所有的請求都在500ms以下,但是每對請求(5到10個)導致請求時間爲2到5秒。HHVM fastcgi + Nginx性能波動
請求的頁面似乎沒有任何區別,並且一次又一次地請求相同的頁面會在幾次請求中觸發此行爲。
我們在用下面的命令行選項服務器模式運行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與這些相關的配置web服務器(我很抱歉,如果我忘了什麼事importand這裏)。
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監事配置爲WEL :
[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 + Hack Lang的經驗。你可以告訴我們你的hhvm server.ini + php.ini嗎? NGINX + FastCGI也一樣。 你使用什麼版本的hhvm? 請求是否執行某事。或連接到數據庫? – Tyralcori