[英]Joomla database memory leak
我的客戶在Amazon EC2上托管了一個基於Joomla的大型網站,具有1.5GB的內存。 該服務器同時托管Apache和MySQL。 現在,數據庫大小約為250MB,網站每天的訪問量約為5000。看起來網站上存在嚴重的內存泄漏,因為有時MySQL使用約99%的CPU內存,然后崩潰。 我曾嘗試優化數據庫表,修改.cnf
,但仍然沒有任何改善。
Joomla智能搜索使用的查找程序表占用了100MB以上的數據庫大小。 我已禁用智能搜索,但是仍然出現問題。
朋友,請提出一些建議解決此問題。
謝謝。
以下是my.cnf文件
[mysqld]
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
symbolic-links=0
bind-address = 127.0.0.1
default-storage-engine=innodb
transaction-isolation = REPEATABLE-READ
character-set-server = UTF8
collation-server = UTF8_general_ci
max_connections = 5000
wait_timeout = 30
connect_timeout = 60
#interactive_timeout = 600
#max_connect_errors = 1000000
#max_allowed_packet = 10M
skip-external-locking
key_buffer_size = 384M
max_allowed_packet = 1M
table_open_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
myisam_sort_buffer_size = 64M
thread_cache_size = 8
query_cache_size = 32M
# Try number of CPU's*2 for thread_concurrency
thread_concurrency = 8
slow_query_log
long_query_time = 2
[mysqld_safe]
log-error=/var/log/mysqld.log
myisam_sort_buffer_size = 64M
我敢打賭,您會受到流氓機器人的攻擊-那里的許多SEO蜘蛛之一,或者諸如80legs之類的工具,這些工具使人們對機器人網絡進行編程以執行任務-時常在編程錯誤中導致重炮轟。
我永遠不記得哪個MySQL設置一次占用內存,每個連接哪個內存-但是由於您設置為最多允許5000個同時連接,並且某些緩沖區為2和8 MB,所以我敢打賭,重載很容易超過可用的總閘板。
您當前的設置將使您的所有日常流量同時達到目標。 我會將其降低到100或更少的設置,看看是否可以提供更大的穩定性。
那里有各種MySQL調諧器腳本,可以幫助您發現分配過多內存的位置。
但是,如果您在崩潰/高負載期間有訪問日志,盡管如此,我還是會檢查惡意機器人-我們一直在不斷努力爭取在我們監控/控制的某些網站上使用它們。
您可能還會檢查thread_concurrency值-取決於可用的CPU數量。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.