【发布时间】:2015-06-04 15:21:04
【问题描述】:
我正在为基于windows azure 的php 应用程序使用clearDB 数据库。我在mysql 连接上遇到间歇性错误。目前我们有近 2000 名在线客户。我们有来自数据库的 30 个连接。
如何扩展网站并克服这种情况?
我大部分时间都在处理关闭连接。现在我已经通过以下方式防止了服务器错误:
try {
$this->_conn = $this->dbh = new PDO('mysql:host=' . DB_SERVER . ';dbname='. DB_NAME, DB_USER, DB_PASS);
$this->dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch (PDOException $e) {
die("Couldn't connect to database. Please try again!");
}
因此,如果没有任何连接,它会显示相应的消息。但是,这对于面向客户的网站是不可行的。我该如何解决这个问题?
编辑
如何分析这些数据:
Array
(
[0] => Array
(
[Variable_name] => Connections
[Value] => 505369
)
[1] => Array
(
[Variable_name] => Threads_cached
[Value] => 54
)
[2] => Array
(
[Variable_name] => Threads_connected
[Value] => 65
)
[3] => Array
(
[Variable_name] => Threads_created
[Value] => 1038
)
[4] => Array
(
[Variable_name] => Threads_running
[Value] => 4
)
)
我得到以上结果后:SHOW STATUS WHERE variable_name LIKE 'Threads_%' OR variable_name = 'Connections'
【问题讨论】:
-
我建议把它交给 ServerFault 或类似的。听起来您需要对数据库设置/通用基础架构进行排序,而不是使用所提供的内容以编程方式完成任何事情..
-
典型的 MySQL 性能故障排除包括打开 slow_query_log、运行 mysqltuner.pl 等调优分析器、检查 DB 规范化等。到目前为止,您做了什么?
-
@Kkinsey:我不知道你提到的那些工具。
-
slow_query_log 是 MySQL 服务器的一个特性;在“my.cnf”中启用它,然后阅读日志文件以查看哪些查询需要改进。参见,例如:dev.mysql.com/doc/refman/5.5/en/slow-query-log.html
-
如果您在使用 ClearDB 时发现问题持续存在,那么您应该考虑迁移到在 Azure VM 上运行的自我管理 MySQL 实例。