7f3c8ec626c5bef165fa82ed20959647.gif
今天遇到用戶反應線上系統出問題,但是測試都正常!最後用跟他一模一樣的方式測試才發現,問題出在報表。因為該用戶的資料量特大!所以跑報表就出問題了。
 
一開始看到的錯誤是
Err Code: 3
Error writing file /tmp/MY915 (Errcode: 28)
仔細查了一下文件才發現是硬碟空間不足。但是太神奇了!因為那台硬碟空間很大,查詢一下 /tmp 空間有 2G ,應該綽綽有餘才對。
 
把他的 SQL 語法抓出來實際執行,還真的會錯誤!再執行一次,一邊觀察 /tmp 空間的變化... 驚人的事情是... mysql 在 join 等資料交換時,會把資料放在 /tmp 作處理,如果同時有多人一起做的時候,資料真的會衝破 2G!真是暈倒了!
 
最後處理方式就是,在 /etc/my.cnf 中設定,把 tmpdir 改成另一個大一點的空間。
# my.cnf 
tmpdir = /mysql_tmp
真是,不經一事,不長一智啊!
 
別問我為何只切 2G 給 /tmp,那是跟國外租的 dedicated server,設定就是那樣,除非要他重灌,但是得付費!所以還是自己解決囉!
 
BTW,有人知道如何直接加大 /tmp 大小嗎?(現在是切一個 partition,別跟我說用 Partition Magic 之類的,機器遠在美國,我只能用 ssh 進去而已)
Facebook 討論區載入中...