Vagrant+Ubuntu 14.04+Nginx+HHVM=慢速+崩溃



根据我的最后一个问题,我试图通过在HHVM下运行Laravel来加速它。

这需要我将服务器更新到64位,所以我现在正在运行Trusty64。我通过deb软件包安装了HHVM和Nginx。我不完全确定我的nginx配置是正确的,我从网上刮了这个:

server {
    listen 80 default_server;
    root /vagrant/public;
    index index.php index.html index.htm;
    server_name localhost;
    access_log /var/log/nginx/localhost.laravel-access.log;
    error_log  /var/log/nginx/locahost.laravel-error.log error;
    charset utf-8;
    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { log_not_found off; access_log off; }
    error_page 404 /index.php;
    include /etc/nginx/hhvm.conf;  # The HHVM Magic Here
}

我的网站在我访问的前几次确实加载了。现在加载的时间是内置PHP服务器的两倍多。几次刷新后,页面完全停止加载,nginx给出504网关超时,我无法再通过SSH访问我的服务器,流浪者只需要几分钟就可以关闭。不管它在做什么,它都会彻底杀死我的服务器。

我听说HHVM使用了某种JIT,需要预热,然后在几次加载后启动?这可能是破坏我服务器的原因吗?我该怎么解决?

更新后:我必须收回我的话!!!!我将laravel代码从共享虚拟箱文件夹移到了非共享目录,现在一旦JIT启动,HHVM将在不到10ms的时间内加载laravel欢迎屏幕。

有一个启动配置设置,指示在HHVM JIT启动之前需要的请求数量。

这是我用于HHVM的ini文件:

 pid = /var/run/hhvm/pid
 hhvm.server.file_socket=/var/run/hhvm/hhvm.sock
 hhvm.server.type = fastcgi
 hhvm.server.default_document = index.php
 hhvm.log.level = Warning
 hhvm.log.always_log_unhandled_exceptions = true
 hhvm.log.runtime_error_reporting_level = 8191
 hhvm.log.use_log_file = true
 hhvm.log.file = /var/log/hhvm/error.log
 hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc
 hhvm.mysql.typed_results = false
 hhvm.eval.jit_warmup_requests = 1

jit_warmup_requests = 1表示在优化之前重新加载一次,但你可以将其设置为0,让它立即生效。我认为如果没有指定,它就像10个请求或其他什么。

无论如何,我有和你一样的设置,nginx,hhvm 3.0.1,laravel,Ubuntu 14,在使用共享文件夹的VirtualBox映像上。我将同一个共享文件夹与运行PHP-FPM5.5的第二个映像一起使用。PHP-5.5在50毫秒左右的时间内加载laravel"you have arrival"页面,而HHVM版本则在250毫秒左右,性能远低于预期。我将测试在非共享目录中运行代码,但我怀疑这是否是问题所在。

我怀疑这与必须在运行时和编译时评估的代码量有关。我知道,如果我用很多神奇的方法和变量运行代码,HHVM就不会大放异彩。Laravel正在进行一些时髦的自动加载,以实现它对名称空间等的隐藏,这可能会产生一些影响,但我需要更深入地阐述这一点。

我在nginx配置文件中有这个,可以将脚本传递给HHVM(注意,我使用套接字,而不是TCP,并且还没有使用hack。)

      location ~ .php$ {
            fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
            fastcgi_index   index.php;
            fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
            include         fastcgi_params;
         }

最新更新