Php Kohana的HHVM设置
我有一个运行Kohana 3.1的应用程序,NGINX和PHP-FPM。我试图用HHVM代替PHP-FPM来处理更多的请求 代码是Php Kohana的HHVM设置,php,kohana,hhvm,Php,Kohana,Hhvm,我有一个运行Kohana 3.1的应用程序,NGINX和PHP-FPM。我试图用HHVM代替PHP-FPM来处理更多的请求 代码是 public function action_test(){ echo 'Hi'; } 在每秒100个请求的情况下,CPU将达到200%,平均负载将达到15 如果我用静态php文件替换Kohana。同一台服务器可以处理200个请求,平均负载仅为3 对于Kohana,HHVM的性能比PHP-FPM差。我的配置有问题吗 Server { Port = 900
public function action_test(){
echo 'Hi';
}
在每秒100个请求的情况下,CPU将达到200%,平均负载将达到15
如果我用静态php文件替换Kohana。同一台服务器可以处理200个请求,平均负载仅为3
对于Kohana,HHVM的性能比PHP-FPM差。我的配置有问题吗
Server {
Port = 9000
Type = fastcgi
SourceRoot = /mypath/to/php/repo
DefaultDocument = index.php
ThreadCount = 20
}
Eval {
Jit = true
EnableObjDestructCall = true
}
Log {
Level = Warning
UseLogFile = true
File = /var/log/hhvm/error.log
InjectedStackTrace = true
NativeStackTrace = true
NoSilencer = on
Header = on
Access {
* {
File = /var/log/hhvm/access.log
Format = %h %l %u %t \"%r\" %>s %b
}
}
}
VirtualHost {
* {
Pattern = .*
RewriteRules {
dirindex {
pattern = ^/(.*)/$
to = $1/index.php
qsa = true
}
}
}
}
StaticFile {
FilesMatch {
* {
pattern = .*\.(dll|exe)
headers {
* = Content-Disposition: attachment
}
}
}
Extensions {
css = text/css
gif = image/gif
html = text/html
jpe = image/jpeg
jpeg = image/jpeg
jpg = image/jpeg
png = image/png
tif = image/tiff
tiff = image/tiff
txt = text/plain
}
}
ResourceLimit {
CoreFileSize = 0 # in bytes
MaxSocket = 50000 # must be not 0, otherwise HHVM will not start
SocketDefaultTimeout = 5 # in seconds
MaxRSS = 0
MaxRSSPollingCycle = 0 # in seconds, how often to check max memory
DropCacheCycle = 0 # in seconds, how often to drop disk cache
}
问题是否由磁盘引起?我们正在运行一个非常繁重的平台,有成百上千的并发用户,每个请求都有成百上千的数据库调用(DB服务器在同一台服务器上),并且我们没有达到静态脚本的负载级别。Nginx和HHVM日志访问日志(如果代码中有错误日志,可能还有错误日志)。大量日志记录可能会增加i/o等待时间。您是否可以运行
dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync
并粘贴结果?以下是复制的1073741824字节(1.1 GB),45.4716秒,23.6 MB/s我正在监视iostat extended,但这并没有显示任何警报,我认为线程的数量是罪魁祸首。我在ec2 m3.L上,它有2个vCPU。当我将线程数减少到20个时,它能够在1个平均负载下处理100个请求。但这会以每秒200个请求的速度中断。您的磁盘速度似乎相当慢。CPU的数量当然也起着重要的作用。2个cpu内核应该很难同时执行20个线程。经验法则是2-4个线程。如果代码没有太多的I/O(为了证明中断的合理性),我假设线程应该开始互相阻塞