在Apache, PHP, MySQL的體系架構中,MySQL對於性能的影響最大,也是關鍵的核心部分。對於Discuz!論壇程序也是如此,MySQL的設置是否合理優化,直接影響到論壇的速度和承載量!同時,MySQL也是優化難度最大的一個部分,不但需要理解一些MySQL專業知識,同時還需要長時間的觀察統計並且根據經驗進行判斷,然後設置合理的參數。 下面我們了解一下MySQL優化的一些基礎,MySQL的優化我分為兩個部分,一是服務器物理硬件的優化,二是MySQL自身(my.cnf)的優化。
一、服務器硬件對MySQL性能的影響
①磁盤尋道能力(磁盤I/O),以目前高轉速SCSI硬盤(7200轉/秒)為例,這種硬盤理論上每秒尋道7200次,這是物理特性決定的,沒有辦法改變。MySQL每秒鐘都在進行大量、復雜的查詢操作,對磁盤的讀寫量可想而知。所以,通常認為磁盤I/O是制約MySQL性能的最大因素之一,對於日均訪問量在100萬PV以上的Discuz!論壇,由於磁盤I/O的制約,MySQL的性能會非常低下!解決這一制約因素可以考慮以下幾種解決方案: 使用RAID-0+1磁盤陣列,注意不要嘗試使用RAID-5,MySQL在RAID-5磁盤陣列上的效率不會像你期待的那樣快。
②CPU 對於MySQL應用,推薦使用S.M.P.架構的多路對稱CPU,例如:可以使用兩顆Intel Xeon 3.6GHz的CPU,現在我較推薦用4U的服務器來專門做數據庫服務器,不僅僅是針對於mysql。
③物理內存對於一台使用MySQL的Database Server來說,服務器內存建議不要小於2GB,推薦使用4GB以上的物理內存,不過內存對於現在的服務器而言可以說是一個可以忽略的問題,工作中遇到了高端服務器基本上內存都超過了16G。
2015年1月7日 星期三
2015年1月6日 星期二
APACHE MOD DOSEVASIVE 防止DDOS模組
Apache v2.0 版本:
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
設定檔說名:
DOSHashTableSize 3097 記錄和存放黑名單的哈西表大小,如果伺服器訪問量很大,可以加大該值
DOSPageCount 2 同一個頁面在同一時間內可以被 同一個用戶訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設置。
DOSSiteCount 50 同一個用戶在同一個網站內可以同時打開的訪問數,同一個時間的數值在DOSSiteInterval中設置。
DOSPageInterval 1 設置DOSPageCount中時間長度標準,預設值為1。
DOSSiteInterval 1 設置DOSSiteCount中時間長度標準。
DOSBlockingPeriod 10 被封時間間隔秒,這中間會收到 403 (Forbidden) 的返回。
DOSHashTableSize 3097
DOSPageCount 2
DOSSiteCount 50
DOSPageInterval 1
DOSSiteInterval 1
DOSBlockingPeriod 10
設定檔說名:
DOSHashTableSize 3097 記錄和存放黑名單的哈西表大小,如果伺服器訪問量很大,可以加大該值
DOSPageCount 2 同一個頁面在同一時間內可以被 同一個用戶訪問的次數,超過該數字就會被列為攻擊,同一時間的數值可以在DosPageInterval參數中設置。
DOSSiteCount 50 同一個用戶在同一個網站內可以同時打開的訪問數,同一個時間的數值在DOSSiteInterval中設置。
DOSPageInterval 1 設置DOSPageCount中時間長度標準,預設值為1。
DOSSiteInterval 1 設置DOSSiteCount中時間長度標準。
DOSBlockingPeriod 10 被封時間間隔秒,這中間會收到 403 (Forbidden) 的返回。
[mysql in windows]Windows下安装cacti注意事项
1. MySQL和PHP下都有libmysql.dll,一般情况下版本不一样,所以要从系统环境变量PATH中去掉MySQL的bin目录,否则就会加载php5ts.dll失败,导致CPU长时间高负荷运行,主要体现在svchost,并且http服务不可使用。
在系统日志里可以看到“Faulting application httpd.exe, version 2.2.16.0, faulting module php5ts.dll, version 5.2.14.14, fault address 0x0000ac5a”
还有另一个奇怪的现象就是,无法用机器名访问数据库,用IP就可以。
在系统日志里可以看到“Faulting application httpd.exe, version 2.2.16.0, faulting module php5ts.dll, version 5.2.14.14, fault address 0x0000ac5a”
还有另一个奇怪的现象就是,无法用机器名访问数据库,用IP就可以。
php5ts.dll 錯誤 windows
php5ts.dll文件是php的内核动态链接库文件,没有此文件则php解析器无法使用。
因此在windows里Apache加载PHP时,Apache不止要加载PHP的Apache模块
LoadModule php5_module "path/to/php5apache2_2.dll"
指定什么类型文件用php解析器解析
AddType application/x-httpd-php .php
很重要的一点是将php5ts.dll文件拷到可搜索的系统目录中,即windows的环境变量如c;\windows\system32。
另外PHP支持mysql时php5ts.dll文件还需要libmysql.dll的支持,因此libmysql.dll文件也要copy到到可搜索路径中。
因此在windows里Apache加载PHP时,Apache不止要加载PHP的Apache模块
LoadModule php5_module "path/to/php5apache2_2.dll"
指定什么类型文件用php解析器解析
AddType application/x-httpd-php .php
很重要的一点是将php5ts.dll文件拷到可搜索的系统目录中,即windows的环境变量如c;\windows\system32。
另外PHP支持mysql时php5ts.dll文件还需要libmysql.dll的支持,因此libmysql.dll文件也要copy到到可搜索路径中。
訂閱:
文章 (Atom)