max_questions錯誤
最近大概每隔一兩週blog就會出現 sql user max_questions 超過上限的錯誤爛掉,blog 架了這麼久最近才開始發生,一時沒想到去 google,就直接 DB 備份一下砍掉再 backup 回去,也就神奇的恢復了。(當時覺得神奇,事實上是應該的) 搞了兩三次以後,在公司又因為連線 port 限制的關係不能連上去 web hosting 修,都要忍耐一天服務中斷回家才能解決,終於乖乖想去找原因。(這麼冷的網站服務中斷一天還好吧orz)沒想到跟字面上差不多,照理說是要大熱門網站才會碰到這種錯誤啊,簡單說 max_questions 就是每小時內每個db user可以 select 的次數上限,由 mysql 管理者所設定。通常只會對 select 做這樣的限制,不過也有聽到討論說他的 web hosting 也限制 insert/update 的。據說現在不少package,例如 phpbb 都喜歡亂操query,使用者稍微多一點就會很容易超過這個上限。我可以想像,自從我看過一個網頁需要列出50筆資料時居然用迴圈 query 50 次的時候,大概就知道這些情形怎麼來的(囧)。而我這麼冷的網站哪來這麼多天殺的 query,大概是 spam block plugin 跟 bots 同心協力的合作結果吧…部落格觀察搞不好也參了一腳 ( ´_ゝ`)
那麼,除了像我之前的暴力解決法 (不良示範),當然也可以聯絡 web hosting 幫你 reset。(看到某論壇竟然有人請 web hosting 幫他每天固定 reset 一次。) 如果你有權限可以修改程式碼的話,以下會是真的能減少辛勞的作法。首先新增兩個都能存取目標 db 的 db user,密碼要設定成跟原來的 db user 一樣。在你使用的軟體的 db 設定的地方,通常是某個 config 檔, 讓程式隨機選一個 user 去連線,大致上就可以把 query 量平均分攤到這三個 user 去。php的寫法範例如下:
$db_user_array[] = "user_name1";
$db_user_array[] = "user_name2";
$db_user_array[] = "user_name3";
$db_user =
$db_user_array[rand(0, (sizeof($db_user_array) -1))];
//define("db_user", "blahblah");
define("db_user", $db_user);
[FreeBSD筆記]update ports
感謝 google 大神,您真是新時代的神明=v=
裝 subversion 卡住之餘查到 update ports 資訊的方法。有時發現 /usr/ports/xxx make install 安裝不順利,多半是要更新 ports 資訊了。
懶人法:
# cvsup -g -L 2 -h cvsup.tw.freebsd.org /usr/share/examples/cvsup/ports-supfile
比較詳細的說明和正規方法請看FreeBSD Howto: 2.3 保持最新的Ports Tree。
Unicode/UTF8
UTF-8 and Unicode FAQ for Unix/Linux
http://www.cl.cam.ac.uk/~mgk25/unicode.html
可以查UTF-8碼:
http://www.macchiato.com/unicode/charts.html
[unix-notes]-常用指令的附加參數
解壓縮:tar vzxf filename.tar
壓縮: tar cf betared.tar directory-to-tar
系統資源管理: ps aux
[...待續,想到慢慢補...]
[unix-notes]-設定unix系統下的環境變數 PATH
檢查目前設定:
echo $PATH
使用shell為 csh tcsh,在 $home 目錄下 .login 檔 加入:
setenv PATH /the/path/youwant:$PATH
使用shell為 bash ksh,在 .profile 加入:
export PATH=$PATH:/the/path/youwant
注意 $PATH 參數內各目錄的順序就是搜尋順序,請依照需要使用。
[unix notes]-前言
很久很久以前,大學的時候我第一次玩Linux,記得那時候普遍的套件是Slackware 3.0(還2.x),是 RedHat 剛推出還不太 Red 的時代。那時的動機主要是想練習架bbs。雖然是裝Linux,不過李建達的FreeBSD黑皮書我可是也有買一本回來拜讀的,實在是本瞭解觀念的好書。(沒想到在CMU會認識到作者本人,呵呵)話說在我成功的把bbs,apache,還有當時採用暴力攔截法做的中文terminal+輸入法搞定之後,就把那塊硬碟遺忘了。當時學會不少東西,等到後來再度開始投身Linux陣營的時候,已經忘掉大半,恐怕連 ls 後面的參數都想不起來。後來發現,只要不是每天使用,隔一陣子之後有些常用功能就變成「我明明知道要怎麼做,可是到底怎麼做啊」的慘況。這就是做筆記的重要啦。有些東西只要設定一次,因此很容易忘記,但隨者系統重灌等等原因,第二次要操作而想不起來內心就會充滿了怨恨,外加懷疑自己上了年紀。其實以前我是有做筆記的,不過好像隨某顆硬碟消失了。這次,最好是最後一次!!順便造福人群。