首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在EC2上调优php、nginx、mysql的高流量

在EC2上调优php、nginx、mysql的高流量
EN

Stack Overflow用户
提问于 2012-09-05 16:24:00
回答 2查看 4.1K关注 0票数 2

我希望优化我在EC2上的设置。CentOS 6,nginx 1.0.15,php5.4.4与php,xcache 2.0.0,mysql 5.24-55-log,redis 2.4.10,EC2 High Cpu XLarge (c1.xlarge 8核,7G ram)用于高流量站点,对每个请求都进行写入。由此产生的web请求非常小(javascript片段)。

基本上,它是一个100%的动态环境(插入或更新)。对于每个web请求,我需要查看memcached中的快速查找,然后用每个页面请求记录一些属性。我在世界各地有几个EC2s帮助每天为600M+请求提供服务。我的想法是记录数据并每小时转储数据,由其他机器处理。每台机器每天处理大约2000万台。我尝试了几个数据存储,一些注意事项如下:

MySQL

  • 使用每小时表来获取数据,所以在2012年9月5日上午11点只写到log_2012_09_05_11。

  • 使用临时存储

  • 事实证明,MyISAM对我来说比无害的要快得多。我和缓冲池一起玩过,我似乎总是能在myisam中得到更好的表现。这里也可以接受任何关于调优的建议,但是查询速度很快。Myisam的锁时间很短。

  • 我使用xdebug对代码进行了分析,在高负载下,98%的时间用于连接mysql。然后,通过使用mysqli的持久连接,我能够获得更好的性能。

  • Max ~2200 rps,获得网关超时和随后的慢响应

  • 服务器负载最大1或2 (8核心机器)

Redis

  • 我真的认为这会很棒,但看起来php是瓶颈。

  • Max ~5-600 rps.

  • 这是用像"log_2012_09_05_11_12345“这样的书写键,12345按小时从一个INCR计数器来。

  • 每15分钟保存一次磁盘(如果我没记错的话,操作大约需要2分钟)

,每秒有多少请求可以从这个EC2机器和100%的写入场景中得到实际的期望?我是否被EC2的磁盘性能或php或mysql绑定?我可以将它配置为使用更多的CPU或更好地使用它正在使用的资源吗?

PHP-FPM http://pastebin.com/raw.php?i=9n2cpqrq

NGINX (nginx.conf) http://pastebin.com/raw.php?i=XuVBKr8m

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-09-07 15:49:07

我真的认为您需要考虑将您的体系结构组件拆分到不同的系统中。例如,您注意到您正在临时存储上运行MySQL。这对于MySQL来说似乎很奇怪,因为您的数据很容易丢失。您考虑过使用Amazon吗?

另外,您还可以考虑使用ElasticCache或SimpleDB作为密钥值存储库,而不是REDIS。

我想我的主要观点是,如果您正在处理大量的请求,您确实应该将您的服务堆栈分解为可以相互独立扩展的多个层。

票数 0
EN

Stack Overflow用户

发布于 2013-09-09 20:55:30

关于性能,请不要使用EBS驱动器,除非是RAID和专用吞吐量。它们和短暂的东西相比真的很烂。我在SSD上使用hi1.4xlarge作为数据库的临时驱动器。

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

https://stackoverflow.com/questions/12285797

复制
相关文章

相似问题

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