Aug 30
幾個月前,我幫人家建置了一套網頁系統,用以觀察網站瀏覽趨勢。
想當然爾,這種系統勢必會對資料庫產生大量 INSERT 或 UPDATE 的 query,而且會保留大量歷史性資料。
為了使系統能快速存取後端資料庫,我將存放 raw data 資料表的 storage engine 設定為 InnoDB。
(因為 InnoDB 支援了 row lock。
)
並搭配定時執行的 script 整理資料,進行統計,並存放在 MyISAM 格式的資料表中。
最近,這套系統的後端資料庫伺服器,mysqld 三不五時會自行 restart,系統狀態也看似正常(根據他們的說法)。
追蹤後,發現 InnoDB 的運作狀態被忽略了...
光是其中一塊放置 raw data 的資料表就存放了三百多萬筆資料,佔用了 3xx MB 的空間,可是 innodb_buffer_pool_size 只有 256 MB,連 mysqldump 都無法完全撈出這塊資料表的內容...
追查程式後,發現原本用以刪除過期 raw data 的那些程式碼片段都被註解掉..
這段故事給我們幾個啟示:
- InnoDB 拿來放 raw data 真的不錯,但是要定時整理,否則維護難度會提高...
- 沒事別雞婆,胡亂更改人家的設計...
Technorati Tags: InnoDB, MySQL
Tags:
InnoDB ,
MySQL
(Visited 9472 times)
Aug 16
現在許多廣告信件都是亂丟,配合來源位址的偽造,可能造成主機在發信上有所阻礙。
例如這種狀況:
廣告信偽造的寄件位址是 no-this-name@yahoo.com.tw,寄給 no-this-user@example-host.com。如果 example-host.com 沒有 no-this-user 這個使用者,那信件會被退到 no-this-name@yahoo.com.tw,久而久之,example-host.com 可能會被 yahoo.com.tw 擋掉。
之前的文章 只提過 exim 上面的擋法,最近是摸出了 Postfix 的設定方式。
- 讓系統進行檢查,main.cf 要有這些片段:
smtpd_restriction_classes =
fakemail_yahoo
fakemail_gmail
...
#
fakemail_yahoo = check_client_access pcre:/usr/local/etc/postfix/fake/yahoo
fakemail_gmail = check_client_access pcre:/usr/local/etc/postfix/fake/gmail
#
smtpd_sender_restrictions =
...,
check_sender_access hash:/usr/local/etc/postfix/fake/CHECK,
...
- 製作規則對應檔(/usr/local/etc/postfix/fake/CHECK),內容大致如下(中間的大空格用 tab 隔開):
yahoo.com fakemail_yahoo
yahoo.com.tw fakemail_yahoo
gmail.com fakemail_gmail
...
- 製作規則檔(以 /usr/local/etc/postfix/fake/yahoo 為例),內容如下(中間的大空格用 tab 隔開):
/(^|\.)yahoo\.com$/ DUNNO
/./ REJECT Fake address
- 用 postmap 產生規則對應檔的 hash map,接著讓 postfix 重新讀入設定檔。
對了,如果有 MX server 的話,都得一起上,不然沒用。
跑了一段時間後,效果還真的蠻顯著的。
Technorati Tags: anti spam, fake address, Postfix
Tags:
anti spam ,
fake address ,
Postfix
(Visited 9539 times)
Recent Comments