DB:
1.數據庫可以適當設計一些冗余字段來減少聯合查詢
2.經常查詢的字段要建立索引
3.查詢內容盡量簡潔, 比如cakephp中的查詢盡量設置$this->recursive=-1,并指定fields.
4.數據庫用單獨的服務器,有條件的常用查詢數據單獨分庫
5.把session等數據放在Memcache而不是數據庫中既能滿足多服務器之間共享也能降低數據庫的負載。
參考如下文章: http://www.linuxjournal.com/article/7451?page=0,1
6.Bad Sql會摧毀系統的CPU,尤其在使用IN查詢時,一定要確保array里面數據是唯一的,且不能有大量數據。
HTTP Request:
1.調節apache增大服務器并發處理連接數
2.壓縮js/css減少客戶并發請求連接數(apache/nginx的gzip配置)
3.盡量使用離線數據庫,少調用遠程http service(geoip service, google map...).至少要設置合理的請求超時時間。
4.圖片、靜態資源用專用的服務器
WEB server:
1.apache+php->ningx+(php+fpm)
2.haproxy, 設置請求隊列queue, 比如50,這樣可以起到緩沖和保護web server的作用,效果明顯
3.添加web server, haproxy負載均衡
( 多服務器注意session/cache放在數據庫或者memcache中,代碼補丁注意同步, 動態生成或者管理員加載的資源注意同步)
Code:
1.避免無效循環
2.避免無效鏈接請求
3.設計上注意不要產生單個服務器的文件
4.設計上注意不要產生大量的小文件,否則可能會引起inode資源耗盡
5.設計上注意不要把大量營銷郵件的發送和單個業務郵件混淆在一起,另外批量郵件的產生和發送邏輯要分開
6.最好把營銷郵件的發送以調用第三方專業郵件服務的形式完成。這樣可以避免垃圾郵件和檢查無效郵件
to be continued.