Amazon RDS实例的性能不佳

我正在对Small RDS数据库实例所支持的PHP Web应用程序进行一些负载/压力testing。 当我用约50个并发的Web请求来访问网站时,RDS数据库仅停止响应所有连接请求约10秒(两者均来自我的Web应用程序以及使用来自其他机器的命令行mysql客户端)。 PHP提供了以下错误:

Could not connect to database. Lost connection to MySQL server at 'reading initial communication packet', system error: 110

我认为这只是在Web应用程序中占用资源很less/很慢的SQL,但是这样的性能看起来非常糟糕,所以我挖了一点深。 我在具有相同版本的mysql,数据库的克隆和默认configuration的EC2微型实例上设置另一个mysql服务器。 EC2实例的执行性能要好几倍(包括延迟时间和在呱呱声之前的并发web请求数量)。

我的RDS实例和我的EC2实例使用的是与默认configuration相同的MySQL版本,尽pipe我已经尝试调整RDS实例以增加各种缓冲区,max_connections和max_connection_errors,但都无济于事。

是什么赋予了? 为什么具有更好的“磁盘”I / O,3倍内存和更多专用CPU的RDS实例的性能优于懦弱的EC2实例?

我怀疑这是AWS怪癖还是MySQL / RDSconfiguration问题 – 希望任何一个主题上的guru都可以照亮这个问题…谢谢!

我们遇到的一个小RDS实例是“连接数”设置。 这是一个基于RAM的公式 – 它只允许在小型数据库上连接150个连接。 这是我首先想到的。

 SHOW PROCESSLIST; 

将是命令。 如果您在应用中没有使用某种连接池,我可以很快看到这个限制。

只是在黑暗中的一枪,但祝你好运反正!

您需要创build一个“数据库参数组”,然后使用命令行工具编辑设置: AWS RDS部署指南 。