首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何粗略估计灯具的应用能力?

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

Stack Overflow用户
提问于 2009-09-30 15:56:37
回答 2查看 2.3K关注 0票数 6

我有一个LAMP应用程序运行良好,但是用户数量每天都在增加。有一天早上,我不想被一个惊喜击中,发现所有的东西都因为过载而坏了。有没有办法粗略估计这盏灯的容量?

我知道,一个完整的详细报告是许多书值得研究,但我可以得到一些快速试金石测试,看看事情是否运行良好。

因此,对于mysql组件,我如何知道它还能承受多大的负载?它的容量是30%还是50%?等。

我的阿帕奇也一样。虽然我有预感DB会在apache之前就死掉。

也许我的原作不太好,因为英语不是我的母语。我真正想要的是一种测量当前负载的方法。然后有一种方法根据这个负载来估计,在它失效之前我还能走多远。(对每个组件、mysqld、httpd分别执行此操作)

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-09-30 16:03:30

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

但是,如果您想自己动手,请参阅下面的答案,或者使用shell实用程序,如: htop、top、w和使用Apache服务器状态。

问题修改前的答案:

您所要求的有时被称为应用程序分析。

您需要创建一个粗略的内存公式,如:

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

您还需要一个CPU公式,但您也可以在负载测试期间的眼球顶部。

Apache有命令ab。

"ab是一个用于对(HTTP)服务器进行基准测试的工具。它的设计目的是让您了解当前Apache安装的执行情况。这尤其向您展示了Apache安装每秒能够提供多少请求。“http://httpd.apache.org/docs/2.0/programs/ab.html。

下面是一个通用的'ab‘基准命令行:

代码语言:javascript
复制
ab -n 10 -c 1 http://www.yoursite.com/
# qty 10 total requests, 1 request at a time

策略是测试从网页请求到完成的应用程序上的每个进程(用户)负载。如果您可以确定每个请求使用多少ram Apache、PHP和MySQL,那么您可以快速确定系统容量。

您可能需要使用一些诊断工具,如vmstat或top,iostat或ps等,以便对系统中的许多请求进行快照。

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

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

http://www.ibm.com/developerworks/opensource/library/os-php-fastapps2/

票数 4
EN

Stack Overflow用户

发布于 2009-09-30 17:07:20

ab是有点烦人,如果你的网站需要饼干等,ab太简单了。

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

1)人们使用MySQL

你完全可以使用MySQL、facebook和flickr来做(mysql的粉丝们喜欢这些),如果你知道以下这些问题:

  • 如果您有一个非只读MyISAM表,并且任何超过100 us (甚至选择)的查询都是死

。

在我修过的一个网站上,那家伙租了一台双核服务器,因为“他的网站需要电力”。我看了他的网站,我看了我以前的网站,有超过100名会员,还有一个运行在Via C7微型半比萨博服务器上的洪流追踪器,我告诉他,你的网站在我地下室的塞隆300上运行得很好,这甚至过火了,我可以用你的Xeon,lol一半的价格把它租给你。

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

  • 10每秒从地狱搜索查询(在他的非法仓库站点上有大约300 K的成员)来自地狱的
  • 搜索查询需要大约0.1秒- 0.2秒的
  • ,对同一个MyISAM表进行一些并发更新,以增加

的趣味性。

所有查询的=>完全序列化(MyISAM写锁)。1内核100%,7内核空闲,loadavg > 1000 (是的,他在使用apache),页面时间>30秒,工作。

修复很简单:从地狱优化搜索查询,修正2)下面,切换到InnoDB,切换到lighttpd。装载量降至0.02

2)更新

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

3)全文

由于locking.

  • MyISAM而不能用于读写表的
  • MyISAM与ramdisk一样可靠(实际上,更少:您需要OS崩溃来破坏内存磁盘,损坏MyISAM表只需要MySQL崩溃,或者只需要过多的并发操作,就会得到“未知的表引擎错误”,我在InnoDB
  • 上看到了这许多times)
  • FULLTEXT --在全文索引中的任何插入都会触发几乎完全的索引重建(当我插入论坛帖子时,它正在重建400 MB的索引)

。

==>如果您需要全文索引、性能和可靠性,请使用Sphinx或Xapian。

我还没有试过狮身人面像(人们会说它很好),但是Xapian很高兴地快速搜索了4GB的文本。

4)人们使用apache。

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

不像一个正确的服务器,比如lighttpd,它的CPU使用率是无法检测的(通过C7提供100个HTTP /s的低劣服务,而lighttpd使用的CPU不足1% ),apache会杀死您的机器。

当MySQL开始死亡(它很容易死)时,客户端开始严重打击F5,很快就有大约1000个F5进程,每个进程都持有一个PHP解释器,每个MySQL解释器都持有一个空闲的mysql连接,等待一个MyISAM锁,除了一个正在对页面视图计数器进行一些微不足道的更新,但这需要一些时间,因为服务器需要交换午餐,因为有1000个apache、1000php和1000个mysql进程。

Lighttpd不使用cpu处理静态页面。让你的CPU饱和的唯一方法是,如果你以20K请求/秒的速度与apachebench重击,那么lighttpd会和一些人交谈,比如10 php-fcgi后端(每个核心2-4是好的),后者可以与几个MySQL连接对话。因此,一切都要快得多,当超载时,它会优雅地降解,而不是爆炸。

为了了解最初的问题,您肯定希望分析一下SQL查询。将查询日志添加到PHP应用程序中,该应用程序显示(仅对您)、查询列表和查询所需时间,以及从PHP脚本开始到结束的时间(页眉/页脚包含是一个很好的位置)。

对于一个复杂的页面(不包括搜索),您会期望大约3毫秒的MySQL和3毫秒的PHP,这是一个很好的目标。当然,您需要一个PHP编译的代码缓存。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1499058

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档