tuning apache

回覆文章
yehlu
Site Admin
文章: 3245
註冊時間: 2004-04-15 17:20:21
來自: CodeCharge Support Engineer

tuning apache

文章 yehlu »

https://blog.wu-boy.com/2008/06/%E5%9F% ... %E8%83%BD/

最近在玩優化 Apache 跟 MySQL 部份,然後就在 google 上面找一些資料,當然對我自己的網站當然改變不少,速度有增快許多,所以來紀錄一下,其實都是還蠻基本的改 config 檔案就可以了 1. apache 部份 for FreeBSD
01
02
03
04
05
#
# 利用 ports 安裝
# 在安裝 Apache 時,加入此參數 WITH_MPM=XXXX 即可。
#
cd /usr/ports/www/apache22 ; make WITH_MPM=worker install clean
如果是要裝在 Linux 機器的話,可能要自己編譯,在 Apache 2.0 有很多效能上得改變,所以原本預設是 prefork
01
02
03
04
#
# 編譯加上
#
./configure --with-mpm=worker
在 Ubuntu 底下作法很奇怪,利用 apt-get 方式不能安裝 mpm worker,因為你安裝 php 的時候他會幫你移除,然後裝上 prefork,所以很奇怪,這部份我還不知道怎麼解決。 接下來設定 httpd-mpm.conf,目前我使用的設備 1g ram CPU x 2
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#
# 修改 httpd-mpm.conf
#
vi /usr/local/etc/apache22/extra/httpd-mpm.conf
# worker MPM
# StartServers: initial number of server processes to start
# MaxClients: maximum number of simultaneous client connections
# MinSpareThreads: minimum number of worker threads which are kept spare
# MaxSpareThreads: maximum number of worker threads which are kept spare
# ThreadsPerChild: constant number of worker threads in each server process
# MaxRequestsPerChild: maximum number of requests a server process serves
<ifmodule mpm_worker_module="">
# Apache 啟動時先開啟 5 個 Threads
StartServers 5
# 最大的連線數
MaxClients 1024
ServerLimit 50
MinSpareThreads 50
MaxSpareThreads 200
ThreadsPerChild 64
MaxRequestsPerChild 200
ThreadLimit 64
</ifmodule>
上面有很多參數,我不是很瞭解,所以還要去參考一下官方網站
StartServers
MaxClients
ServerLimit
MinSpareThreads
MaxSpareThreads
ThreadLimit
ThreadsPerChild
MaxRequestsPerChild
然後修改 httpd-default.conf 來減少不必要的負擔
01
02
03
04
05
06
07
08
09
10
11
12
13
#
# vi /usr/local/etc/apache22/extra/httpd-default.conf
#
# 連線超過 60 秒失敗就重試
Timeout 60
# 開啟 KeepAlive
KeepAlive On
# 設定同一時間可容許的 KeppAlive 量
MaxKeepAliveRequests 5000
# KeepAlive 多久要自動 Timeout 掉
KeepAliveTimeout 3
# 關掉那費時的 DNS 查尋
HostnameLookups Off
上面設定好的話,請重新啟動 apache
01
02
03
04
#
# 指令
#
/usr/local/etc/rc.d/apache22 restart
然後可以加上 php 模組:[FreeBSD] 安裝 PHP APC 加速網頁速度 或者是加裝 Zend Optimizer (www.zend.com)
01
02
03
04
05
06
07
08
09
10
11
12
13
#
# 安裝
#
cd /usr/ports/devel/ZendOptimizer; make install clean
#
# 修改vi /usr/local/etc/php.ini 加入
#
[Zend]
zend_optimizer.optimization_level=15
zend_extension_manager.optimizer="/usr/local/lib/php/20060613-zts-debug/Optimizer"
zend_extension_manager.optimizer_ts="/usr/local/lib/php/20060613-zts-debug/Optimizer_TS"
zend_extension="/usr/local/lib/php/20060613-zts-debug/ZendExtensionManager.so"
zend_extension_ts="/usr/local/lib/php/20060613-zts-debug/ZendExtensionManager_TS.so"
在 MySQL 優化方面,其實在系統就有設定檔幫我們弄好了 FreeBSD 是放在 /usr/local/share/mysql 底下
* my-huge.cnf: 適合 1GB – 2GB RAM的主機使用。 * my-large.cnf: 適合 512MB RAM的主機使用。 * my-medium.cnf: 只有 32MB – 64MB RAM 的主機使用,或者有 128MB RAM 但需要運行其他伺服器,例如 web server。 * my-small.cnf: 記憶體少於 64MB 時適用這個,MySQL 會佔用較少資源。
選定好我們要的檔案之後,就把他移動到 mysql 設定的目錄底下
01
02
03
04
#
# 複製檔案
#
cp /usr/local/share/mysql/my-huge.cnf /var/db/mysql/my.cnf
修改 my.cnf 檔案
01
02
03
04
05
06
07
08
09
10
#
# my.cnf 底下的 max_connections 跟 max_user_connections
# 必須大於 apache 的 "MaxClients" 值
#
max_connections = 1024
max_user_connections = 1024
table_cache = 1200
#
# 因為 mysql 預設就是1個user就是用1個 connection
# MySQL defaults to 1 max connection, with 1 max connection per user
參考網站: http://ms.ntcb.edu.tw/~steven/article/apache-tuning.htm http://www-css.fnal.gov/dsg/external/fr ... uning.html Performance Tuning Apache for mod_perl and Cgi-Proxy Web Server Optimization Guide
Related View

[FreeBSD]安裝 apache2 (worker) + PHP5.2.6 + mod_fastcgi + php5-fcgi (3)
[FreeBSD] update apache -> 2.2.15, PHP -> 5.3.2, and MySQL downgrade to 5.1.9 (1)
Ubuntu (Debian) 架設 apache mpm worker mod_fcgid 筆記 (0)
[FreeBSD]high performance caching reverse proxy: Varnish (安裝架設篇) (9)
[轉貼] RoR:Ruby on Rails的部署方案選擇 (0)
[FreeBSD]Apache 噴出 signal Segmentation fault (11) (1)
Nginx + phpMyAdmin 搭配 SSL 設定 (2)
[FreeBSD] 安裝 PHP APC 加速網頁速度 (4)
[FreeBSD]Lighttpd + php5 + 解決 wordpress Permalinks mod_write (1)
[FreeBSD & Linux]網站分流:簡易架設 HAProxy 伺服器 (1)
回覆文章

回到「apache」