2014年7月29日 星期二

MySQL 調教--Run OPTIMIZE TABLE to defragment tables

寫在前面:
--------------------------------------------------------------------------------------------------------
如果對於設定不熟的話,其實MySQL以經內建幾個文件可以使用,
路徑在/usr/share/mysql 下,  差異性在於機器的記憶體大小...

my-innodb-heavy-4G.cnf (4GB的記憶體)
my-huge.cnf (1~2GB的記憶體)
my-large.cnf (128~512MB的記憶體)
my-medium.cnf (64~128MB的記憶體)
my-small.cnf (小於64MB的記憶體)

--------------------------------------------------------------------------------------------------------
在執行MySQL的校正工具-mysqltuner.pl ,出現以下的報告

 Run OPTIMIZE TABLE to defragment tables for better performance
 Reduce your overall MySQL memory footprint for system stability
 Increase table_cache gradually to avoid file descriptor limits
 Read this before increasing table_cache over 64: http://bit.ly/1mi7c4C
 Optimize queries and/or use InnoDB to reduce lock wait...

處理方式:
執行以下命令 
mysqlcheck -u root -p --auto-repair --check --optimize --all-databases

(若出現以下錯誤:Error:  mysqlcheck doesn't support multiple contradicting commands.
可改用以下方式試試看:
mysqlcheck --auto-repair --optimize --all-databases -uroot -p
)


-------------------------------------------------------------------------------------------------

Add skip-innodb to MySQL configuration to disable InnoDB

處理方式:
編輯 /etc/my.cnf

在 [mysqld]下增加 skip-innodb 

記得重啟mysql

-------------------------------------------------------------------------------------------------
  Enable the slow query log to troubleshoot bad queries
處理方式:
系統建議可開啟slow query log 之功能來記錄執行特別久的 SQL,以供後續的分析,方法為增加兩行設定到 /etc/my.cnf
log_slow_queries= mysqld-slow.log
long_query_time= 10
設定後一樣需重新啟動 MySQL。

log_slow_queries 指定 slow query log 存放之檔名,預設存在 /var/lib/mysql/ 目錄下。
long_query_time 設定超過幾秒之 SQL Query 會被記錄在 log_slow_queries 之log 檔中,系統預設值為 10秒。


2014年7月28日 星期一

Apache 效能調教

0. Linux Kernel 若是 2.4,最好升到在2.6.18,可以透過uname -a  來查看,許多效能有提升..
1.編輯   /etc/httpd/conf/httpd.conf
1.關閉DNS 查詢: ,找到HostnameLookups 設為Off
2.設定 Timeout 60
3.設定 KeepAlive on
4.設定KeepAliveTimeout 15
5.設定 MaxKeepAliveRequests 為 5000 (同時最大可允許的KeepAlive數量)
6.如果未架設虛擬主機,則建議UseCanonicalName On

2. 伺服器中關閉不必要的服務,儘量簡單輕量化
1. 可以透過chkconfig 設定開機時不啟動 ,以MySQL資料庫為例子,可以透過命令 chkconfig mysqld off ,如果已經運行中的可以透過service mysqld stop 將服務停止

3. Apache 運作是採用MPM(multi-processing modules),目前有perfork 、worker 、event三種,其中以perfork 運作間容性與可靠性較佳,
透過httpd -l 可以看目前運作的何種模式
調整perfork的相關參數 編輯   /etc/httpd/conf/httpd.conf ,找到prefork的區塊,可調整為

StartServers       20
MinSpareServers    20
MaxSpareServers   50
ServerLimit      500
MaxClients       500
MaxRequestsPerChild  4000







2014年7月22日 星期二

apache 2.2.15 升級2.2.3

因為資安的問題,所以強制要將apache升級,首先可以先透過命令列看一下apache 的版本
httpd -v





可以看到apache版本為2.2.15,
先透過yum remove httpd 將apache 移除
































請留意一下,移除httpd時同時把php都移掉了,
所以記得待會要重新安裝一下(我卡在這個地方好久........@@!)

接下來安裝apache,
請下命令 yum install httpd







安裝完後重新啟動服務,你會發現apache無法解析php網頁,
原因如剛剛所說的,你在卸載apache時,yum一併把php給卸載,
記得重新安裝php












yum install php
安裝完畢後記得重新啟動apache,
另外要注意的是,因為是重新安裝,所以之前apache的設定都變成初始值,
記得到 /etc/httpd/conf/httpd.conf 去做調整
下面是我PHP網頁回復正常了...