club.189.cn網站維護優化總結
**使用者頻繁攻擊伺服器
描述:網站免費發簡訊功能,使用者通過惡意程式瘋狂訪問網站發簡訊,導致資料庫訪問量過高,資料庫伺服器宕機
解決方案:1、臨時解決方案,通過日誌查到ip,在nginx或apache入口地址禁止此ip訪問,在nginx或apache配置中設定deny.conf,專門新增ip地址
2、程式解決方案,在開發具體專案中,思考一下此專案是否會吸引使用者攻擊,從程式上防止使用者攻擊。比如免費簡訊肯定會引來使用者攻擊,程式中除了要限制同一使用者免費簡訊數量,還要限制同一ip的使用者數量,因為使用者很可能批量申請賬號,進行攻擊。
**通過減少頁面js,css檔案載入數量,提高使用者訪問速度
描述:開發過程中,為了程式碼的可讀性和可複用性,將js,css拆分到多個檔案中,導致頁面載入檔案過多,頁面訪問速度下降
解決方案:通過寫指令碼,將頁面中公共的js,css進行合併,將同一功能模組的js,css進行合併
**通過慢查詢日誌,解決sql語句問題
描述:資料庫down機,通過查詢日誌,發現大量使用者賬戶表的查詢,而且條件沒有用上索引
解決方案:修改程式或建立索引,減少慢查詢sql數量。要定期分析慢查詢日誌,減少效率低下的sql語句
**用人不當,低水平的人寫安全性要求高的程式碼漏洞百出
描述:寫註冊登陸的程式設計師,考慮安全性問題不夠全面,所以出現問題比較多,比如賬號重複問題等
解決方案:對於新程式設計師,要有計劃地一步步把重任交給他,不要一下把非常重要地任務交給他。新人入職,要分配簡單任務,一步步加大難度,摸清手底下程式設計師的水平。
**從程式和資料庫又保險保證安全性
描述:網站出現重複賬號,而且重複賬號之間自增id緊挨著
解決方案:1、查錯解決問題:檢查程式,看程式裡有沒有連續重複插入使用者賬號,並沒有發現sql異常;檢查資料表,發現account欄位不是唯一鍵,刪除重複賬號,為唯一鍵建立索引,監控錯誤日誌。有可能是使用者惡意註冊,併發導致的問題。
2、開發中避免:通過解決問題總結出,開發中,要從程式和資料庫設計兩方面避免出現問題。考慮安全性時,除考慮正常訪問的使用者,還要考慮惡意使用者併發請求,所以資料庫中建唯一鍵是最根源的辦法。
**資料庫sql導致伺服器down機
描述:wap伺服器接連down機,將php使用記憶體調小後底層資料庫封裝報超出記憶體大小錯誤,經檢視程式碼,發現底層封裝findOne方法沒有自動加limit 1,程式裡有一句查詢語句,結果集很大,但想取一行,sql語句沒有加limit 1。
解決方案:1、封裝底層資料庫的時候,一定要注意限制結果集過大,對所有的查詢都要加上limit,保證結果集不會太大; 2、同時寫前端sql裡,不要相信底層封裝,養成限制sql結果集大小的習慣; 3、要熟練掌握php、apache(nginx)、mysql的配置引數,針對不同的問題不斷優化配置。
**新人接手19pay後缺少文件
描述:19pay計費專案歷時比較,由於此專案程式設計師離職,新人拉手時需要一些文件,但是此專案的溝通完全交給程式設計師做了,離職後公司沒有文件
解決方案:專案開發交給一程式設計師做,溝通工作要部分給程式設計師,不要全部交給程式設計師,一定注意對文件性內容的儲存。