2014-07-15 6 views
6

वर्तमान में हमने उत्पादन वातावरण में एचएचवीएम का उपयोग करना शुरू कर दिया है और अब तक लगभग सभी परिणाम काफी प्रभावशाली हैं। एपीसी के साथ PHP-FPM की तुलना में हमारी समग्र लेनदेन दर में काफी सुधार हुआ है। लगभग सभी अनुरोध 500ms से कम हैं, हालांकि प्रत्येक दो अनुरोध (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 चल रहे हैं (मैं माफी चाहता हूँ अगर मैं यहाँ 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; 

सर्वर में 128 जीबी मेमोरी और 24 कोर (वास्तव में हाइपरथ्रेडिंग वास्तव में 12 है)।

हमने https://github.com/facebook/hhvm/wiki/Runtime-options पर खोज करने के लिए काफी कुछ किया है, हालांकि अधिकांश विकल्पों को बहुत अच्छी तरह से समझाया नहीं गया है, इसलिए मुझे नहीं पता कि वे क्या करते हैं और उत्पादन वातावरण में उनका परीक्षण करना थोड़ा डरावना है।

क्या किसी को भी ऐसी ही समस्या थी या शायद मुझे कुछ एचएचवीएम विकल्पों के साथ दिशा में इंगित कर सकता था, मैं बहुत आभारी हूं।

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 के रूप में पर्यवेक्षक config शुरू करने के लिए :

[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 
+0

मुझे एचएचवीएम + हैक लैंग के साथ कुछ अनुभव हैं। क्या आप हमें अपना एचएचवीएम server.ini + php.ini दिखा सकते हैं? एनजीआईएनएक्स + फास्टसीजीआई के लिए वही। एचएचवीएम का आप किस संस्करण का उपयोग करते हैं? अनुरोध अनुरोध sth। या डेटाबेस से कनेक्ट करें? – Tyralcori

उत्तर

2

तो हम यह पता लगा करने में कामयाब रहे, यह HHVM की एक संयुक्त समस्या और आवेदन हम प्रयोग कर रहे हैं था।

एचएचवीएम काफी कुछ perf - **** बनाता है। नक्शा फाइलें और वहां sess_ फ़ाइलों के ढेर भी होते हैं। कुल मिलाकर जहां/tmp निर्देशिका में 8 मिलियन से अधिक फ़ाइलें हैं। उन समस्याओं को हटाने के बाद हमारी समस्याएं दूर हो गईं और लगभग सभी हमारे अनुरोध प्रदर्शन में काफी सुधार हुए हैं। साथ ही सत्र फ़ाइलों को पहले स्थान पर नहीं होना चाहिए था, लेकिन यह एक समस्या थी जो पहले ही तय हो चुकी है।

अब हमने अपने स्टार्टअप तर्कों में -vEval.PerfPidMap जोड़कर perf-files की पीढ़ी को अक्षम कर दिया है।

+0

वाह, मैंने अभी देखा/tmp और sess_ फ़ाइलों के zillions हैं। आप क्यों कहते हैं कि उन्हें वहां नहीं होना चाहिए और आपने उन्हें उत्पन्न करने वाले एचएचवीएम की समस्या को "ठीक" कैसे किया? – pjv

+0

सत्र फ़ाइलों की अत्यधिक मात्रा एचएचवीएम में एक बग के कारण थी। Https://github.com/facebook/hhvm/issues/3747#issuecomment-59141301 देखें। अभी एक फिक्स है लेकिन हमने पुराने सत्र फ़ाइलों को साफ़ करने के लिए अभी एक cronjob जोड़ा है। – Fraak

+0

धन्यवाद, मैंने यहां एक पोस्ट लिखा है कि मैंने इसके साथ कैसे व्यवहार किया: http://community.rtcamp.com/t/hhvm-session-files/3639/1 – pjv

संबंधित मुद्दे