我正在为我的硕士论文做性能测试,我发现 Symfony2 简单应用程序的性能很差。这是一款简单的应用程序,一个查询和一些数学运算。
命令测试结果:
ab -c10 -t60 http://sf2.cities.localhost/app.php
Server Software: Apache/2.2.20
Server Hostname: sf2.cities.localhost
Server Port: 80
Document Path: /app.php
Document Length: 2035 bytes
Concurrency Level: 10
Time taken for tests: 60.162 seconds
Complete requests: 217
Failed requests: 68
(Connect: 0, Receive: 0, Length: 68, Exceptions: 0)
Write errors: 0
Non-2xx responses: 68
Total transferred: 393876 bytes
HTML transferred: 321102 bytes
Requests per second: 3.61 [#/sec] (mean)
Time per request: 2772.458 [ms] (mean)
Time per request: 277.246 [ms] (mean, across all concurrent requests)
Transfer rate: 6.39 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 2.1 0 11
Processing: 230 2641 2493.1 1778 17146
Waiting: 230 2641 2493.1 1778 17146
Total: 230 2642 2492.9 1778 17146
在测试之前我启动了两个命令:
php app/console --env=prod cache:clear php app/console --env=prod cache:warmup
Symfony 检查页面告诉我,我只是没有 intl 扩展名,所以 apc 可能没问题。
我的 PHP 版本是:
PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch
有人可以给我一些建议,让我知道我还应该检查我的环境吗?
最佳答案
它可以是任何数量的东西,包括您的计算机无法处理负载。不过,我可以给您一些指示。
您正在返回一些错误 Failed requests: 68 .查看 apache 日志文件,它们可能表明问题所在。如果您在其中找不到任何内容,请确保启用了日志记录并且您的配置文件设置了正确的日志级别。你的VirtualHost定义应该包含类似的东西
LogLevel debug
CustomLog /var/log/apache2/access-localhost.log vhost_combined
ErrorLog /var/log/apache2/error-localhost.log
使用 LogLevel debug仅用于调试。您需要将其设置为 warn或 error用于生产。
在 php.ini 和您的脚本中启用错误日志记录,并检查您的 php 错误日志是否有任何问题。
确保您的 apache2.conf 配置正确,尤其是 mpm 模块。这是一个标准配置,尽管远非完美配置:
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 0
</IfModule>
<IfModule mpm_worker_module>
StartServers 2
MaxClients 150
MinSpareThreads 25
MaxSpareThreads 75
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
确保你有足够的 RAM,你只需要大约 1GB 的 apache2(至少在 linux 下)
您还可以尝试针对小型静态文本文件(大约 2kb)检查性能,看看性能如何。之后检查简单的 <? php echo 'Hello World!' ?>查看 php 解释器的性能影响。这两个测试都应该让您了解您的 apache 在当前配置下的能力。如果两次测试的性能都可以接受,那么就是您的应用程序运行缓慢。
要尝试的另一件事是在测试中禁用并发,看看是否有帮助。这表明您的应用程序或数据库访问存在并发问题。
ab -c1 -t60 http://sf2.cities.localhost/app.php
如果还是慢,google apache performance tuning和(假设您使用 MySQL 作为数据库)mysql performance tuning
关于php - 表现不佳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10599863/
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭9年前。我来自C、php和bash背景,很容易学习,因为它们都有相同的C结构,我可以将其与我已经知道的联系起来。然后2年前我学了Python并且学得很好,Python对我来说比Ruby更容易学。然后从去年开始,我一直在尝试学习Ruby,然后是Rails,我承认,直到现在我还是学不会,讽刺的是那些打着简单易学的烙印,但是对于我这样一个老练的程序员来说,我只是无法将它
我使用以下钩子(Hook)来检查在执行includeFoo时执行包含的模块:moduleFoodefself.included(includer)putsincluderendendModule#include在模块中(通常使用它的地方)与在顶层的行为不同。在模块内部,self是模块,它是Module的一个实例.当我调用include,执行包含的模块是whatself是:moduleBarputsself#=>BarincludeFoo#=>includer:Barend在ruby脚本的顶层,self是main,它是Object的一个实例.当我调用include在顶层,包含的模块是
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我使用PHP的时间太长了,对它感到厌倦了。我也想学习一门新语言。我一直在使用Ruby并且喜欢它。我必须在Rails和Sinatra之间做出选择,那么您会推荐哪一个?Sinatra真的不能用来构建复杂的应用程序,它只能用于简单的应用程序吗?
我很确定Ruby有这些(等同于__call、__get和__set),否则find_by将如何在Rails中工作?也许有人可以举一个简单的例子来说明如何定义与find_by相同的方法?谢谢 最佳答案 简而言之你可以映射__调用带有参数的method_missing调用__设置为方法名称以'='结尾的method_missing调用__获取不带任何参数的method_missing调用__调用PHPclassMethodTest{publicfunction__call($name,$arguments){echo"Callingob
Lisp是否适合Web编程/应用程序(交互式),就像ruby和php一样?需要考虑的事情是:易于使用可部署性难度(尤其是对于编程初学者而言)(编辑)在阅读PaulGraham'sessay之后,我特别提到了CommonLisp.将是我的第一门编程语言。在这方面。这样做合适吗?我听说Clojure的宏功能不如CommonLisp的强大,这就是我尝试学习Clojure的原因。它教授编程并且非常强大。 最佳答案 Lisp是一个语系,而不是单一的语言。为了稍微回答您的问题,是的,存在用于各种Lisp方言的Web框架,例如用于Common
我不明白为什么在Ruby中,Array#slice和Array#slice!的行为与Array#sort和Array#sort!(一个返回新数组的结果,另一个处理当前对象)。使用sort第一个(没有爆炸),返回当前数组的排序副本,并且sort!对当前数组进行排序。slice,返回指定范围的数组,slice!从当前对象删除指定范围。Array#slice!的行为为何如此,而不是使当前对象成为具有指定范围的数组?例子:a=[0,1,2,3,4,5,6,7,8,9]b=a.slice(2,2)puts"slice:"puts"a="+a.inspectputs"b="+b.inspectb=
项目背景和意义 目的:本课题主要目标是设计并能够实现一个基于微信校园跑腿小程序系统,前台用户使用小程序发布跑腿任何和接跑腿任务,后台管理使用基于PHP+MySql的B/S架构;通过后台管理跑腿的用户、查看跑腿信息和对应订单。意义:手机网络时代,大学生通过手机网购日常用品、外卖外卖、代取快递等已不再是稀奇的事情。此外,不少高校还流行着校园有偿工作,校园跑腿就成了大学生创业服务项目。 因为你在校园里,所以不会有进入的限制。并不是所有的外卖平台都可以随意进入校园,比如小黄和小蓝的双打外卖平台。许多大学禁止送餐进入学校,更不用说送餐进入宿舍了。这一措施使得校园服务市场的竞争相对不
前言 前端时间PHP项目部署升级需要,需要把Laravel开发的项目部署K8s上,下面以laravel项目为例,讲解采用yaml文件方式部署项目。一、部署步骤1.创建Dockerfile文件Dockerfile是一个用来构建镜像的文本文件,在容器运行时,需要把项目文件和项目运行所必须的组件安装其中。#基础镜像FROMphp:7.4-fpm#时区ARGTZ=Asia/Shanghai#更换容器时区RUNcp"/usr/share/zoneinfo/$TZ"/etc/localtime&&echo"$TZ">/etc/timezone#替换成阿里apt-get源RUNsed-i"s@http
这是一个理论问题:是否可以将FalseClass的行为更改为像TrueClass一样?可以覆盖to_s、xor、&、|行为,但这还不够。如果你喜欢测试驱动开发,请听从我同事的建议:puts"falseisnewtrue!"iffalseputs"neverhappens"iftrueassertfalse断言行不通,对吗?有没有可能顺利通过考试? 最佳答案 这是不可能的。一种思考方式是没有可以重新定义的方法Object#truthiness?。在RubyMRI中,真实性测试是RTEST宏是硬连接的,除了Qfalse和Qnil外,这两
关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭9年前。Improvethisquestion我对学习Rails很感兴趣已经有一段时间了,我觉得现在正是浸入其中并实际动手实践的好时机。在过去的一周里,我阅读了所有我能找到的关于Ruby和RubyonRails的免费电子书。我刚刚读完RubyEssentials。我也一直在玩htt