[心得]一些工作經驗回顧
第一份工作持續了兩年多,雖然所在的單位系統已經上線 N 年了,非常穩定,剩餘的工作都是維護居多。 但因為人數持續增長,也陸續面臨了各種奇怪的挑戰,常常要翻 LOG 查問題跟上面的人報告可以有哪些解法。 在找這些問題學到了不少,加上常常需要跟 DBA 還有 DC 打交道,多少增廣見聞。 礙於全部的筆記跟資料都留在公司電腦了,趁著休息的這段時間, 剛好慢慢回顧一下兩年來的一些心得,並陸續整理在這篇文章。 一些工作經驗回顧 機器選擇 Q: 如何評估新服務機器量 A: 估當前需求,評估使用次數,讀得多,寫得多,呼叫頻率為何?是否離峰時段跟尖峰差距很大。 再評估未來一到兩年需求可能會增長的量,各別壓測WEB與DB,看是否會遇到瓶頸,決定好後把服務簡單搭起來完整壓測 WEB+DB 再次評估。 單台 WEB 機器+單台 DB 機器,WEB 遇到瓶頸: 解決方案: 1.加 WEB 機器,導入利用 nginx 做 loadbalance 優點: 簡單、便宜 缺點: 未來瓶頸變成 MYSQL、擴展性低、可用性低 2.拆服務、拆機器 優點: 性能高、擴展性高,未來可以依功能拆服務依服務加機器、可用性高 缺點: 須對服務本身拆分難度高、WEB 機與 DB 數量需要較多,較昂貴 機器的 loadbalance: 有錢: 利用機器例如 F5 在Layer4(連線層)、Layer7(應用層)做掉 沒錢: Nginx NGINX 方式有幾種算法 1.round-robin(default) 2.least connected load balancing 3.weighted load balancing 4.ip_hash 其中1~3方法無法保證同個使用者用到同一台。 另外曾經遇到使用最少連線時未設定上限, 導致瞬間大流量全部灌到同一台上掛掉,故設定上要小心。 http://mysql.taobao.org/monthly/ http://nginx.org/en/docs/http/load_balancing.html https://www.ithome.com.tw/node/65773 其他: worker_connections 、 client_max_body_...