中文字幕一区二区人妻电影,亚洲av无码一区二区乱子伦as ,亚洲精品无码永久在线观看,亚洲成aⅴ人片久青草影院按摩,亚洲黑人巨大videos

如何限制每個(gè)用戶(hù)的MySQL最大連接數(shù)

發(fā)布于:2020-12-19 19:02:30

0

3068

0

MySQL 最大連接數(shù) 限制

是單個(gè)站點(diǎn)在MySQL服務(wù)器上造成了嚴(yán)重破壞嗎?

通過(guò)設(shè)置每個(gè)用戶(hù)的MySQL連接限制,可以保護(hù)服務(wù)器上的其他站點(diǎn)免受單個(gè)站點(diǎn)的影響,從而導(dǎo)致連接過(guò)載。

如果是,您并不孤單。

在我的MySQL優(yōu)化服務(wù)中,我經(jīng)??吹椒?wù)器上有幾個(gè)站點(diǎn)占用100%的可用MySQL連接。

您可能熟悉my.cnf中的max_connections設(shè)置;但是您知道嗎,還有一個(gè)max_user_connections變量?

所述MAX_USER_CONNECTIONS設(shè)置限制在每個(gè)用戶(hù)的基礎(chǔ)數(shù)據(jù)庫(kù)的連接數(shù)。

如果您想學(xué)習(xí)如何將此變量應(yīng)用于共享主機(jī)服務(wù)器,請(qǐng)繼續(xù)閱讀。

最大用戶(hù)連接數(shù)

這個(gè)變量的作用恰如其名,它設(shè)置了一個(gè)限制,即每個(gè)用戶(hù)可以同時(shí)連接到MySQL數(shù)據(jù)庫(kù)的最大最大連接數(shù)。

在共享主機(jī)系統(tǒng)上,這是一項(xiàng)功能強(qiáng)大的設(shè)置,因?yàn)槟梢允褂盟鼇?lái)防止單個(gè)用戶(hù)用盡所有MySQL連接。

設(shè)定極限

通常,我建議您將max_user_connections設(shè)置為max_connections設(shè)置的50-75%。您可以在my.cnf的mysqld部分中設(shè)置此值:

1個(gè)
2
3
4
5
6
7
cat /etc/my.cnf
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
max_connections = 400
max_user_connections=200

在此示例中,我們總共允許400個(gè)連接,一個(gè)用戶(hù)最多可以使用200個(gè)連接。

我從哪里得到這個(gè)號(hào)碼?

這基于我在100臺(tái)MySQL服務(wù)器上的工作。通常,我發(fā)現(xiàn)只有一兩個(gè)用戶(hù)參與了大多數(shù)MySQL連接。通過(guò)將此數(shù)字設(shè)置為50-75%,您可以有效地為其他用戶(hù)和站點(diǎn)保留MySQL連接插槽的25-50%。

如果您想更精確地進(jìn)行調(diào)整,建議您監(jiān)視MySQL以找出高峰連接時(shí)間何時(shí)發(fā)生。然后在此期間,對(duì)服務(wù)器進(jìn)行輪詢(xún),以查看誰(shuí)在建立最多的連接。

我對(duì)此不太科學(xué)。我通常只在MySQL命令行上運(yùn)行show process list。我將其與通過(guò)諸如NewRelic,ServerDensity之類(lèi)的工具或安裝的任何服務(wù)器監(jiān)視工具提供給我的跟蹤結(jié)合起來(lái)。

然后,我設(shè)置了一個(gè)限制,該限制將阻止用戶(hù)接管數(shù)據(jù)庫(kù),但仍允許足夠的連接以使站點(diǎn)正常運(yùn)行。

好處

通過(guò)設(shè)置max_user_connections,可以減少單個(gè)用戶(hù)帳戶(hù)對(duì)服務(wù)器上所有站點(diǎn)產(chǎn)生負(fù)面影響的可能性。這在共享主機(jī)設(shè)置中特別有用,在共享設(shè)置中,您可能無(wú)法控制最終用戶(hù)生成的代碼或流量。

如果DoS或搜索漫游器為網(wǎng)站帶來(lái)了大量流量,這也將有所幫助。我已經(jīng)看到過(guò)攻擊性搜索機(jī)器人可能淹沒(méi)MySQL系統(tǒng)的情況。與正常流量不同,搜索引擎會(huì)訪問(wèn)多個(gè)頁(yè)面-大多數(shù)頁(yè)面不太可能緩存在MySQL的查詢(xún)緩存或其他緩存中。結(jié)果,負(fù)載和MySQL連接可能會(huì)激增。設(shè)置max_user_connections限制可以幫助解決這種情況。

每個(gè)應(yīng)用一個(gè)用戶(hù)

您應(yīng)該始終為每個(gè)應(yīng)用程序使用唯一的MySQL用戶(hù)帳戶(hù)。這樣可以提高安全性,并使連接問(wèn)題的診斷更加容易。

我在單個(gè)租戶(hù)服務(wù)器上看到的一個(gè)常見(jiàn)問(wèn)題是,傾向于僅將一個(gè)用戶(hù)用于所有數(shù)據(jù)庫(kù)連接。

這是個(gè)錯(cuò)誤。

對(duì)于每個(gè)應(yīng)用程序,建議您創(chuàng)建一個(gè)特定的用戶(hù)名和密碼。出于安全和性能方面的考慮,這很好。

通過(guò)為每個(gè)應(yīng)用程序使用特定用戶(hù),您可以輕松確定哪個(gè)應(yīng)用程序正在與數(shù)據(jù)庫(kù)建立大量連接。通過(guò)組合使用max_user_connections,可以減少單個(gè)應(yīng)用程序使系統(tǒng)過(guò)載的可能性。

例如,在最近的MySQL優(yōu)化案例中,我發(fā)現(xiàn)對(duì)論壇的搜索請(qǐng)求觸發(fā)了長(zhǎng)時(shí)間運(yùn)行的MySQL查詢(xún)。這些查詢(xún)填滿(mǎn)了整個(gè)服務(wù)器的連接插槽。結(jié)果,博客和購(gòu)物車(chē)失敗了。

通過(guò)使用max_user_connections,我們能夠保護(hù)其他應(yīng)用程序免受論壇討論的困擾。

缺點(diǎn)

主要缺點(diǎn)是,如果將該數(shù)字設(shè)置得太低,則可能在繁忙的站點(diǎn)上偶爾引起錯(cuò)誤。由于這些錯(cuò)誤可能是零星的,因此可能很難檢測(cè)到。

如果達(dá)到這些限制,大多數(shù)PHP應(yīng)用程序?qū)⒎祷豈ySQL錯(cuò)誤,提示與MySQL服務(wù)器的連接過(guò)多。如果您需要提高此限制,則Apache或PHP錯(cuò)誤日志也可能提供線索。

帶走

在繁忙的MySQL服務(wù)器上使用max_user_connections可以確定特定的MySQL用戶(hù)活動(dòng),以免對(duì)其他用戶(hù)造成負(fù)面影響。我建議將max_user_connections設(shè)置為您的總max_connections的50-75%。