- Disabling The Typechecker:
HHVM automatically runs the typechecker - this is useful in development, but assuming you have it running in your development workflow and in your CI system, there is not much additional benefit to running it in production, and the increased memory usage can be costly in production. To disable it, add the following to /etc/hhvm/server.ini:
hhvm.hack.lang.auto_typecheck=0 hhvm.hack.lang.look_for_typechecker=0
Reference:
https://hub.docker.com/r/hhvm/hhvm-proxygen/
- Switch to UNIX socket inside of port for fastcgi mode:
HHVM is considered for environments under heavy load so the first configuration change you can do is to make HHVM listen to a socket instead of a TCP port. Thus, the communication between Nginx and HHVM will require less CPU and memory.
Add this to: /etc/hhvm/server.ini
hhvm.server.file_socket=/var/run/hhvm/hhvm.sock ; hhvm.server.port = 9000
I also common out the port line to increase a bit of security.
Then change the Nginx config to hhvm as well:
/etc/nginx/hhvm.conf
fastcgi_pass unix:/var/run/hhvm/hhvm.sock;
- Tweaking Memory:
By default the memory_limit is equal to 17179869184 bytes, which is 16 GB.
Such a high memory resource limit will certainly kill a server with a few GB of RAM, making it unresponsive.
I decrease this value to 500 MB for a 1 GB memory Server:
Add this to: /etc/hhvm/php.ini
memory_limit = 500M
Restart to apply the changes:
service hhvm restart service nginx restart
Reference:
https://www.digitalocean.com/community/tutorials/how-to-install-hhvm-with-nginx-on-ubuntu-14-04
- A much more pushed example for a bigger server:
; php options pid = /var/run/hhvm/hhvm.pid ; hhvm specific ; hhvm.server.port = 9000 hhvm.server.file_socket= /var/run/hhvm/hhvm.sock hhvm.server.type = fastcgi hhvm.server.default_document = index.php ; logging settings hhvm.log.use_log_file = true hhvm.log.file = /var/log/hhvm/error.log hhvm.log.header = true hhvm.log.level = Warning hhvm.log.always_log_unhandled_exceptions = true hhvm.log.runtime_error_reporting_level = 8191 hhvm.mysql.typed_results = false hhvm.repo.central.path = /var/run/hhvm/hhvm.hhbc hhvm.server.source_root = /var/www/html ; php compatibility hhvm.server.allow_duplicate_cookies = 0 hhvm.enable_obj_destruct_call = 1 hhvm.enable_zend_sorting = 1 hhvm.enable_zend_compat = 1 ; logging hhvm.log.admin_log.file = /var/log/hhvm/admin.log ; admin server hhvm.admin_server.password = xxx hhvm.admin_server.port = 8088 hhvm.admin_server.thread_count = 1 ; required for magento2 hhvm.libxml.ext_entity_whitelist = "file" ; apc hhvm.server.apc.enable_apc = true ; jit hhvm.jit = true hhvm.jit_warmup_requests = 5 ; debugger hhvm.debugger.enable_debugger = false hhvm.debugger.enable_debugger_server = false hhvm.debugger.default_sandbox_path = /var/www/html hhvm.enable_zend_ini_compat = false hhvm.jit_a_cold_size=201326592 hhvm.jit_a_frozen_size=201326592 hhvm.jit_a_size=201326592 hhvm.jit_global_data_size=201326592 hhvm.mysql.connect_timeout=6000 hhvm.repo.central.file_group=www-data hhvm.repo.central.file_user=www-data hhvm.server.connection_timeout_seconds=300 hhvm.server.implicit_flush=1 hhvm.server.request_timeout_seconds=300 hhvm.server.thread_count=10000
Reference:
https://github.com/facebook/hhvm/issues/7754
No comments:
Post a Comment