Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何粗略估计灯具的应用能力?_Php_Mysql_Linux_Performance_Lamp - Fatal编程技术网

Php 如何粗略估计灯具的应用能力?

Php 如何粗略估计灯具的应用能力?,php,mysql,linux,performance,lamp,Php,Mysql,Linux,Performance,Lamp,我有一个LAMP应用程序运行良好,但是用户数量每天都在增加。我不想有一天早上突然发现所有东西都因为超载而坏了。有没有办法粗略估计一下灯的容量 我知道完整详细的报告是许多值得研究的书籍,但我可以做一些快速的试金石测试,看看事情是否进展顺利 那么,对于mysql组件,我如何判断它能承受多大的负载呢?是30%容量还是50%容量?等等 我的apache也一样。虽然我有一种感觉DB会在apache之前死去 也许我的原创不太好,因为英语不是我的母语。我真正想问的是一种测量电流负载的方法。然后有一种方法可以

我有一个LAMP应用程序运行良好,但是用户数量每天都在增加。我不想有一天早上突然发现所有东西都因为超载而坏了。有没有办法粗略估计一下灯的容量

我知道完整详细的报告是许多值得研究的书籍,但我可以做一些快速的试金石测试,看看事情是否进展顺利

那么,对于mysql组件,我如何判断它能承受多大的负载呢?是30%容量还是50%容量?等等

我的apache也一样。虽然我有一种感觉DB会在apache之前死去



也许我的原创不太好,因为英语不是我的母语。我真正想问的是一种测量电流负载的方法。然后有一种方法可以根据这个负载来估计,在它失败之前我还能走多远。(对于每个组件,mysqld和httpd,这应该分别进行)

对于当前负载,您可以做一些事情。最昂贵但最详细的答案将通过企业应用程序(如“Gomez”)提供

但是,如果您想自己做这件事,请参阅下面我前面的答案,或者使用shell实用程序,例如:htop、top、w和uslike Apache server status

问题修订前的回答:

您所要求的有时称为应用程序评测

您需要创建一个大致的内存公式,如:

httpd ram+php内存使用率+mysql进程使用率=总请求内存占用率

您还需要一个CPU公式,但您也可以在负载测试期间查看top

Apache有命令“ab”

“ab是一种用于对Apache超文本传输协议(HTTP)服务器进行基准测试的工具。它旨在让您对当前Apache安装的性能有一个印象。这尤其向您展示了Apache安装每秒能够处理多少请求。”

下面是一个通用的“ab”基准测试命令行:

ab -n 10 -c 1 http://www.yoursite.com/
# qty 10 total requests, 1 request at a time
策略是从web页面请求到完成测试应用程序上的每个进程(用户)负载。如果您可以确定Apache、PHP和MySQL在每个请求中使用了多少ram,那么您就可以快速确定您的系统容量

您可能需要混合使用各种诊断工具,如vmstat或top或iostat或ps等,以获取系统对大量请求的快照

最后,您需要安装Xdebug。此工具将帮助您分析应用程序的php端。

以下是IBM关于安装Xdebug的教程:


如果你的网站需要cookies等,ab有点烦人,ab太简单了

基本上,根据我修复几个崩溃的PHP网站的经验,它通常是这样的:

1) 人们使用MySQL

如果您知道以下问题,您完全可以使用MySQL、facebook和flickr做到这一点(MySQL粉丝们喜欢这些):

  • 如果您有一个非只读MyISAM表,并且任何查询长度超过100 us(甚至选择),那么您就死定了
在我修复的一个站点上,这个家伙租用了一个双四核服务器,因为“他的站点需要电力”。我看了看他的网站,我看了看我以前的网站,有超过10万的会员,还有一个运行在Via C7 micro half pizzabox服务器上的torrent tracker,我告诉他,你的网站在我地下室的Celeron 300上运行得很好,这简直太过分了,我可以以你Xeon一半的价格租给你,哈哈

事实证明,这家伙是一个很好的开发人员,也是一个很好的家伙,但他对MySQL很差劲,所以他的网站有一个典型的地狱搜索查询,可以杀死任何网站:

  • 每秒10次来自地狱的搜索查询(他在非法的warez网站上有大约30万名成员)
  • 来自地狱的搜索查询大约需要0.1-0.2秒
  • 对同一个MyISAM表进行少量并发更新,以增加趣味性
=>所有查询的总序列化(MyISAM写锁)。1个内核100%,7个内核空闲,loadavg>1000(是的,他使用的是apache),页面时间>30秒,工作正常

修复很简单:从地狱优化搜索查询,下面的修复点2),切换到InnoDB,切换到lighttpd。平均负荷降至0.02

2) 更新

没有人对页面计数器感兴趣。 问题1:每个页面视图更新一次,你就死定了。 添加一些MyISAM以获得更多效果。也是InnoDB上的杀手,不是关于锁定,而是关于同步磁盘IO等待

3) 全文

  • 由于锁定,MyISAM不可用于读写表
  • MyISAM和ramdisk一样可靠(事实上,更少:你需要一个操作系统崩溃来破坏ramdisk,破坏MyISAM表只需要一个MySQL崩溃,或者只是同时点击它太多,你会得到“未知表引擎错误”,我见过很多次)
  • InnoDB上没有全文
  • 在全文索引中的任何插入都会触发几乎完整的索引重建(当我插入 论坛帖子(它正在重建400 MB的索引)
=>如果您需要全文索引、性能和可靠性,请使用Sphinx或Xapian

我没有试过斯芬克斯(人们都说它不错),但Xapian很高兴能在一瞬间搜索4GB的文本

4) 人们使用apache

这与上面的几点很好地结合在一起

不像像lighttpd这样CPU使用率无法检测的服务器(crummy Via C7提供100次HTTP点击率,lighttpd使用的CPU不到1%),apache会杀死你的盒子

当MySQL开始消亡(它很容易消亡)时,客户端开始重击F5,很快就会有大约1000个apache进程,每个进程都有一个PHP解释器,每个PHP解释器都有一个空闲的MySQL连接,等待MyISAM锁,除了一个,它正在对页面视图计数器进行一些琐碎的更新,但这需要一些时间,因为服务器是gon