国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 數據庫 > MySQL > 正文

Mysql5.6啟動內存占用過高解決方案

2024-07-24 12:41:09
字體:
來源:轉載
供稿:網友

最近把MySQL升級到了5.6版本,無意中在任務管理器發現MySQL內存占用達到400+M,這是怎么回事呢?以前的版本可沒有遇到過這種情況啊。開始的時候還以為是緩存了某個數據量較大的表的數據。于是重啟MySQL服務,但結果出乎意料,MySQL服務一起啟動,內存就又飆升到400+M。心想,這肯定不是緩存的那個表數據的問題了。接下來就是尋找解決MySQL 5.6 內存占用過高這個問題的解決方案了。 經過實驗測試,修改一下my.ini這個配置文件的配置選項是可以限制MySQL5.6內存占用過高這一問題的,具體修改選項如下:

performance_schema_max_table_instances=400
table_definition_cache=400
table_open_cache=256

你如果在my.ini這個文件沒中找到以上配置選項,則追加到該文件中即可。 完成以上配置的修改,重啟MySQL服務。這個MySQL的內存占用從修改前的400+M直接降到40+M。 再也不會擔心MySQL占用內存過高的問題啦^_^

vps的內存為512M,安裝好nginx,php等啟動起來,mysql死活啟動不起來看了日志只看到對應pid被結束了,后跟蹤看發現是內存不足被killed;

調整my.cnf 參數,重新配置(系統默認配置太高直接占用400M內存,小玩家玩不起呢)即可

performance_schema_max_table_instances=200table_definition_cache=200table_open_cache=128

下面附一個相關的my.cnf配置文件的說明

[client]port = 3306socket = /tmp/mysql.sock[mysqld]port = 3306socket = /tmp/mysql.sockbasedir = /usr/local/mysqldatadir = /data/mysqlpid-file = /data/mysql/mysql.piduser = mysqlbind-address = 0.0.0.0server-id = 1 #表示是本機的序號為1,一般來講就是master的意思skip-name-resolve# 禁止MySQL對外部連接進行DNS解析,使用這一選項可以消除MySQL進行DNS解析的時間。但需要注意,如果開啟該選項,# 則所有遠程主機連接授權都要使用IP地址方式,否則MySQL將無法正常處理連接請求#skip-networkingback_log = 600# MySQL能有的連接數量。當主要MySQL線程在一個很短時間內得到非常多的連接請求,這就起作用,# 然后主線程花些時間(盡管很短)檢查連接并且啟動一個新線程。back_log值指出在MySQL暫時停止回答新請求之前的短時間內多少個請求可以被存在堆棧中。# 如果期望在一個短時間內有很多連接,你需要增加它。也就是說,如果MySQL的連接數據達到max_connections時,新來的請求將會被存在堆棧中,# 以等待某一連接釋放資源,該堆棧的數量即back_log,如果等待連接的數量超過back_log,將不被授予連接資源。# 另外,這值(back_log)限于您的操作系統對到來的TCP/IP連接的偵聽隊列的大小。# 你的操作系統在這個隊列大小上有它自己的限制(可以檢查你的OS文檔找出這個變量的最大值),試圖設定back_log高于你的操作系統的限制將是無效的。max_connections = 1000# MySQL的最大連接數,如果服務器的并發連接請求量比較大,建議調高此值,以增加并行連接數量,當然這建立在機器能支撐的情況下,因為如果連接數越多,介于MySQL會為每個連接提供連接緩沖區,就會開銷越多的內存,所以要適當調整該值,不能盲目提高設值。可以過‘conn%‘通配符查看當前狀態的連接數量,以定奪該值的大小。max_connect_errors = 6000# 對于同一主機,如果有超出該參數值個數的中斷錯誤連接,則該主機將被禁止連接。如需對該主機進行解禁,執行:FLUSH HOST。open_files_limit = 65535# MySQL打開的文件描述符限制,默認最小1024;當open_files_limit沒有被配置的時候,比較max_connections*5和ulimit -n的值,哪個大用哪個,# 當open_file_limit被配置的時候,比較open_files_limit和max_connections*5的值,哪個大用哪個。table_open_cache = 128# MySQL每打開一個表,都會讀入一些數據到table_open_cache緩存中,當MySQL在這個緩存中找不到相應信息時,才會去磁盤上讀取。默認值64# 假定系統有200個并發連接,則需將此參數設置為200*N(N為每個連接所需的文件描述符數目);# 當把table_open_cache設置為很大時,如果系統處理不了那么多文件描述符,那么就會出現客戶端失效,連接不上max_allowed_packet = 4M# 接受的數據包大小;增加該變量的值十分安全,這是因為僅當需要時才會分配額外內存。例如,僅當你發出長查詢或MySQLd必須返回大的結果行時MySQLd才會分配更多內存。# 該變量之所以取較小默認值是一種預防措施,以捕獲客戶端和服務器之間的錯誤信息包,并確保不會因偶然使用大的信息包而導致內存溢出。binlog_cache_size = 1M# 一個事務,在沒有提交的時候,產生的日志,記錄到Cache中;等到事務提交需要提交的時候,則把日志持久化到磁盤。默認binlog_cache_size大小32Kmax_heap_table_size = 8M# 定義了用戶可以創建的內存表(memory table)的大小。這個值用來計算內存表的最大行數值。這個變量支持動態改變tmp_table_size = 16M# MySQL的heap(堆積)表緩沖大小。所有聯合在一個DML指令內完成,并且大多數聯合甚至可以不用臨時表即可以完成。# 大多數臨時表是基于內存的(HEAP)表。具有大的記錄長度的臨時表 (所有列的長度的和)或包含BLOB列的表存儲在硬盤上。# 如果某個內部heap(堆積)表大小超過tmp_table_size,MySQL可以根據需要自動將內存中的heap表改為基于硬盤的MyISAM表。還可以通過設置tmp_table_size選項來增加臨時表的大小。也就是說,如果調高該值,MySQL同時將增加heap表的大小,可達到提高聯接查詢速度的效果read_buffer_size = 2M# MySQL讀入緩沖區大小。對表進行順序掃描的請求將分配一個讀入緩沖區,MySQL會為它分配一段內存緩沖區。read_buffer_size變量控制這一緩沖區的大小。# 如果對表的順序掃描請求非常頻繁,并且你認為頻繁掃描進行得太慢,可以通過增加該變量值以及內存緩沖區大小提高其性能read_rnd_buffer_size = 8M# MySQL的隨機讀緩沖區大小。當按任意順序讀取行時(例如,按照排序順序),將分配一個隨機讀緩存區。進行排序查詢時,# MySQL會首先掃描一遍該緩沖,以避免磁盤搜索,提高查詢速度,如果需要排序大量數據,可適當調高該值。但MySQL會為每個客戶連接發放該緩沖空間,所以應盡量適當設置該值,以避免內存開銷過大sort_buffer_size = 8M# MySQL執行排序使用的緩沖大小。如果想要增加ORDER BY的速度,首先看是否可以讓MySQL使用索引而不是額外的排序階段。# 如果不能,可以嘗試增加sort_buffer_size變量的大小join_buffer_size = 8M# 聯合查詢操作所能使用的緩沖區大小,和sort_buffer_size一樣,該參數對應的分配內存也是每連接獨享thread_cache_size = 8# 這個值(默認8)表示可以重新利用保存在緩存中線程的數量,當斷開連接時如果緩存中還有空間,那么客戶端的線程將被放到緩存中,# 如果線程重新被請求,那么請求將從緩存中讀取,如果緩存中是空的或者是新的請求,那么這個線程將被重新創建,如果有很多新的線程,# 增加這個值可以改善系統性能.通過比較Connections和Threads_created狀態的變量,可以看到這個變量的作用。(

主站蜘蛛池模板:
南木林县|
遂溪县|
灌南县|
丽江市|
波密县|
科技|
浏阳市|
乌拉特前旗|
无锡市|
工布江达县|
吴忠市|
连山|
乌审旗|
伊通|
凤山县|
双城市|
资中县|
黑龙江省|
太康县|
巢湖市|
奇台县|
张家口市|
九龙城区|
抚宁县|
济宁市|
万荣县|
黎川县|
蒲江县|
海兴县|
灌南县|
高淳县|
潮州市|
阿荣旗|
雅江县|
黄陵县|
乌恰县|
丹凤县|
无为县|
沂源县|
新营市|
利津县|