1.硬體優化
a.cpu 一台機器8-16顆8-16g 2-4顆
b.記憶體 96g-128g 3-4個例項 32-64g 跑2個例項
c.disk數量越多越好,效能:ssd (高併發)> sas(普通業務線上) >sata
raid10>raid5>raidserver1 d.網絡卡,多塊網絡卡bond,以及buffer,tcp優化
2.引數優化
優化的幅度很小,大部分 架構以及sql語句優化
監控 生產引數時一般情況下引數
show global status\g
工具 mysqlreport3.sql優化
a.索引的優化
1)抓出慢sql,配置my.cnf
long_query_time = 1
log-slow-queries = /data/3306/slow.log
按天輪詢slow-log.log
2)慢查詢日誌分析工具--mysqlsla(推薦)
b.大的複雜的sql語句拆分成多個小的sql語句
c.資料庫是儲存資料的地方,但不是計算資料的地方
d.搜尋功能,一般不用mysql資料庫4.架構優化
1.業務拆分,搜尋功能,like 『%全職%』,一般不要用資料庫
2.資料庫前端使用nosql持久化儲存
3.資料庫集群與讀寫分離,一主多從,通過程式進行讀寫分離
4.單錶超過2000萬,拆庫拆表
5.動態資料靜態化。流程、制度、安全優化
如何一次人為資料庫記錄的更新,都要走乙個流程
a.人的流程 開發--->核心開發--->運維或dba**開啟慢
1)show full processlist:
2)慢查詢語句
long_query_time = 1
log-slow-queries = /data/3306/slow.log
a、資料庫負載高,有慢查詢,做聯合索引案例,檢視表結構,有沒有建索引
b、頻寬滿了,磁碟滿了,連線數消耗完了
c、資料庫中像 like』%%』 這樣的語句特別多,導致資料庫負載高,這樣的語句對於資料庫沒有太大的優化餘地
登入資料庫檢視 show full processlist:
mysql -uroot -p』111』 -e 「show full processlist」 | grep -vi sleep 資料庫中像 like』%%』 這樣的語句特別多,導致資料庫負載高,這樣的語句對於資料庫沒有太大的優化餘地
優化方法
1)業務上實現先登入再搜尋,減少搜尋次數
2) 分析web日誌的ip,如果有大量頻繁的搜尋,一般是爬蟲在爬你的**(awstats是乙個免費非常簡潔而且強大有個性的統計工具)
3) 配置多個從庫,程式上實現讀寫分離
4) 在資料庫前端加上快取伺服器tips
mysqldump大於50g就用xtarbackup
mysqlbinlog -d aaa mysql-bin.0020 > aaa.sql (生成的sql都是aaa庫的)
nginx動態配置配置
nginx中的conf檔案配置測試 upstream backserver server upsync指令指定從consul哪個路徑拉取上游伺服器配置 upsync timeout配置從consul拉取上游伺服器配置的超時時間 upsync interval配置從consul拉取上游伺服器配置的間隔...
Nginx配置分析 nginx 二
基於網域名稱配置 在 conf nginx.conf中新增兩個虛擬主機配置 server server 配置host檔案,dns本地化 192.168.1.103 www.host1.com 192.168.1.103 www.host2.com 測試成功 埠配置在 conf nginx.conf中...
nginx 配置nginx集群(7)
1.準備兩台伺服器 且都安裝nginx 和keepalived 安裝keepalived yum install keepalived y安裝好後linux 的etc 資料夾下面會有keepalived資料夾以及配置檔案 2.修改keepalived的配置問價 virtual ipaddress3....