![](/img/trans.png)
[英]With Symfony, can I check how many db connections open and close on a page load?
[英]How can I see how many MySQL connections are open?
如何查看在當前請求期間通過在 Apache 上運行的 PHP 中的mysql_connect
打開了多少個連接?
我知道如果我用相同的參數調用mysql_connect
function 100 次,它總是會返回相同的連接鏈接。 一旦連接已經存在,它將不會啟動新連接。
但我只想確保mysql_connect
沒有開始一個新的。
我正在使用包含許多mysql_connect
function 調用的舊系統。
Apache 中是否有任何設置,或者有什么方法可以在 Apache 或 MySQL 日志文件中記錄此連接數?
我認為有幾種方法:
SHOW STATUS WHERE `variable_name` = 'Threads_connected'
或者您可以執行SHOW PROCESSLIST
並在Id
列中找出唯一值。 In old PHP API mysql
, there is mysql_list_processes
function that does the same as SHOW PROCESSLIST
, too.
但第一個應該適合你。 也許您可能想檢查其他STATUS 變量
還有其他關於連接的有用變量,在您的特定情況下,變量Connections
可能有助於確定您的代碼是否建立了太多連接。 只需在運行代碼之前和之后檢查它的值。
# mysql -e 'SHOW STATUS WHERE variable_name LIKE "Threads_%" OR variable_name = "Connections"'
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Connections | 22742 |
| Threads_cached | 1 |
| Threads_connected | 87 |
| Threads_created | 549 |
| Threads_running | 51 |
+-------------------+-------+
連接
MySQL 服務器的連接嘗試次數(成功與否)。
線程緩存
線程緩存中的線程數。
Threads_connected
當前打開的連接數。
Threads_created
為處理連接而創建的線程數。 如果 Threads_created 很大,您可能需要增加 thread_cache_size 值。 緩存未命中率可以計算為 Threads_created/Connections。
線程運行
未休眠的線程數。
當前連接狀態:
mysqladmin status
查看Threads:
計數。 可以使用以下命令獲取有關當前連接的更多詳細信息:
user@host:~$ mysqladmin -uroot -ppass extended-status | grep Threads
| Threads_cached | 0 |
| Threads_connected | 3 |
| Threads_created | 3 |
| Threads_running | 1 |
user@host:~$ mysqladmin -uroot -ppass processlist
+----+------+-----------+----+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+------------------+
| 53 | root | localhost | | Sleep | 258 | | |
| 54 | root | localhost | | Sleep | 253 | | |
| 58 | root | localhost | | Query | 0 | | show processlist |
+----+------+-----------+----+---------+------+-------+------------------+
僅供參考mysqladmin -v -uroot -ppass processlist
類似於show full processlist
。
命令可以縮短為任何唯一的前綴,並同時調用:
user@host:~$ mysqladmin -v -uroot -ppass proc stat
+----+------+-----------+----+---------+------+-------+-----------------------+
| Id | User | Host | db | Command | Time | State | Info |
+----+------+-----------+----+---------+------+-------+-----------------------+
| 53 | root | localhost | | Sleep | 951 | | |
| 54 | root | localhost | | Sleep | 946 | | |
| 65 | root | localhost | | Query | 0 | | show full processlist |
+----+------+-----------+----+---------+------+-------+-----------------------+
Uptime: 1675 Threads: 3 Questions: 171 Slow queries: 0 Opens: 235
Flush tables: 1 Open tables: 57 Queries per second avg: 0.102
您可以使用 MySQL 命令show processlist來獲取連接數。
我不認為你可以看到連接數,但可以限制連接到 mysql 服務器。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.