Nginx+Apache+Mysql+Php+eaccelerator+Zend构建高性能的WEB服务器

Nginx ("engine x") 是一个高 性能HTTP 和反向代理 服务器,也是一个 IMAP/POP3/SMTP 代理 服务器。 Nginx 是由 Igor Sysoev 为俄罗斯访问量第二的 Rambler.ru 站点 开发的,它已经在该站点运行超过两年半了。Igor 将源 代码以类BSD许可证的形式发布。

Nginx 超越 Apache 的高性能和稳定性,使得国内使用 Nginx 作为 Web 服务器的网站也越来越多,但是网上吹嘘胜于apche10倍实在比较夸张, apache经过优化之后处理PHP 页面速度还是不错的,比fastcgi方式要稳定的多。

本文就是整合了 nginx和apache,由nginx处理静态页,apache处理 php页面


安装步骤
系统要求:Linux 2.6+ 内核,本文中的Linux操作系统为CentOS 4.8,另在RedHat AS4上也安装成功

一、获取相关 开源 程序
所需 软件


eaccelerator-0.9.5.3.tar.bz2
gd-2.0.35.tar.gz
httpd-2.2.14.tar.bz2
mysql-5.1.42.tar.gz
php-5.2.12.tar.bz2
ZendOptimizer-3.3.9- linux-glibc21-i386.tar.gz
nginx-0.7.64.tar.gz
pcre-8.0.tar.gz

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

安装之前要确保系统中安装了以下这些包。
我们可以用rpm -qa |grep 来查看系统是否装


bzip2-devel
zlib-devel
libjpeg-devel
libpng-devel
libtiff-devel
freetype-devel
openssl-devel
libxml2-devel
gettext-devel

这些包一般都安了,除了最后一个,我们可以在光盘里找到用rpm -ivh 来安装上.



二、安装MY SQL
  1. # tar -zxvf mysql-5.1.42.tar.gz
  2. # cd mysql-5.1.42
  3. # groupadd mysql
  4. # useradd -g mysql -s /sbin/nologin -M mysql
  5. # ./configure --prefix=/usr/local/www/mysql --with-charset=gbk --with-extra-charsets=all --enable-thread-safe-client --localstatedir=/var/data
  6. # make && make install
  7. # cp support-files/my-large.cnf   /etc/my.cnf
  8. # chown -R mysql.mysql /usr/local/www/mysql/
  9. # /usr/local/www/mysql/bin/mysql_install_db --user=mysql
  10. # chown -R root.root /usr/local/www/mysql/
  11. # chown -R mysql.mysql /var/data
复制代码
启动 数据库服务,并添加到自启动
  1. # /usr/local/www/mysql/bin/mysqld_safe --user=mysql &
  2. # netstat -ant
复制代码
查看3306端口

加入 自动启动服务队列:
  1. # cp   support-files/mysql.server   /etc/rc.d/init.d/mysqld
  2. # chmod   755   /etc/rc.d/init.d/mysqld
  3. # chkconfig --add mysqld
  4. # chkconfig mysqld on
复制代码
添加root密码
  1. # /usr/local/www/mysql/bin/mysqladmin -u root password "123456"
复制代码
测试一下:
  1. # /usr/local/www/mysql/bin/mysql -u root -p
复制代码
输入密码:123456,看能不能进入到 数据

配置库 文件搜索路径
  1. # echo "/usr/local/www/mysql/lib/mysql">>/etc/ld.so.conf
  2. # ldconfig
  3. # ldconfig -v
  4. # echo "export PATH=$PATH:/usr/local/www/mysql/bin">>/etc/profile
  5. # source /etc/profile
复制代码
三、安装gd
  1. # tar -jxvf gd-2.0.35.tar.bz2
  2. # cd gd-2.0.35
  3. # ./configure --prefix=/usr/local/www/gd --with-png --with-freetype --with-jpeg --with-zlib  --with-fontconfig
  4. # make
  5. #如果GD报错:configure.ac:64: warning: macro `AM_ICONV' not found in library
  6. 你就make clean一下,然后再make
  7. # make install
复制代码
----------------------------------------------

四、安装Apache
  1. # groupadd www
  2. # useradd -g www -s /sbin/nologin -M www

  3. # tar -jxvf httpd-2.2.14.tar.bz2
  4. # cd httpd-2.2.14
  5. # cd srclib/apr  
  6. # ./configure --prefix=/usr/local/www/apr --enable-threads --enable-other-child --enable-static
  7. # make && make install
  8. # cd ../apr-util
  9. # ./configure --prefix=/usr/local/www/apr-util --with-apr=/usr/local/www/apr
  10. # make && make install
  11. # cd ../..
  12. # ./configure --prefix=/usr/local/www/apache --enable-so --enable-rewrite --with-apr=/usr/local/www/apr --with-apr-util=/usr/local/www/apr-util
  13. # make
  14. # make install

  15. #vi /usr/local/www/apache/conf/httpd.conf
复制代码
(1)找到DocumentRoot "/usr/local/www/apache/htdocs"
修改为:DocumentRoot "/var/www"

(2)找到
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all        //这句改为Allow from all
</Directory>

(3)找到<Directory "/usr/local/www/apache/htdocs">
修改为:<Directory "/var/www">

(4)找到
Options Indexes FollowSymLinks  //这行注释掉,禁止目录列表

(5)找到

<IfModule !mpm_netware_module>
<IfModule !mpm_winnt_module>

User daemon              //改为www
Group daemon             //改为www

</IfModule>
</IfModule>

添加到自启动

# cp /usr/local/www/apache/bin/apachectl /etc/rc.d/init.d/httpd

然后 vi /etc/rc.d/init.d/httpd 添加(#!/bin/sh下面)
# chkconfig: 2345 10 90
# description: Activates/Deactivates Apache Web Server

最后,运行chkconfig把Apache添加到系统的启动服务组里面:
# chkconfig --add httpd
# chkconfig httpd on



五、安装PHP
  1. # tar -jxvf php-5.2.12.tar.bz2
  2. # cd php-5.2.12
  3. # ./configure --prefix=/usr/local/www/php --with-apxs2=/usr/local/www/apache/bin/apxs --with-mysql=/usr/local/www/mysql --with-gd=/usr/local/www/gd --with-config-file-path=/usr/local/www/php --enable-mbstring=all --enable-xml --disable-rpath  --enable-bcmath --enable-shmop --enable-sysvsem --enable-inline-optimization  --enable-mbregex --with-zlib --enable-sockets --enable-soap --enable-exif --with-zlib-dir --with-bz2 --with-libxml-dir
  4. # make
  5. # make install
  6. # cp php.ini-dist /usr/local/www/php/php.ini
复制代码
整合apache与php
# vi /usr/local/www/apache/conf/httpd.conf

找到AddType application/x-gzip .gz .tgz在其下加以下内容


AddType application/x-httpd-php .php

查找 设置WEB默认文件)
DirectoryIndex index.html
改成:


DirectoryIndex index.php index.html index.htm

保存退出


service httpd restart

然后在目录中建一个文件用来测试php情况
在htdocs目录下建一个测试页



vi index.php
<?php
phpinfo();
?>

保存退出
重启apache


六、安装PHP扩展

1、安装eaccelerator加速软件

eaccelerator是php的加速软件,使用后php的执行效率会有很大幅度的提升。
  1. # tar jxvf eaccelerator-0.9.5.3.tar.bz2
  2. # cd eaccelerator-0.9.5.3
  3. # /usr/local/www/php/bin/phpize
  4. # ./configure --enable-eaccelerator=shared --with-php-config=/usr/local/www/php/bin/php-config
  5. # make
  6. # make install
复制代码
编译安装后我们会看到屏幕提示的eaccelerator.so所在的目录,php5.2.x系列是在/usr/local/www/php/lib /php/extensions/no-debug-non-zts-20060613,记住这个路径,待会要用到

修改php.ini

# vi /usr/local/www/php/php.ini

安装php扩展
在文件最后,[zend]之前,注意,这部分内容务必放在[zend]之前,不然可能会出现不可预期的服务器问题。添加下列信息:


[eaccelerator]
zend_extension="/usr/local/www/php/lib/php/extensions/no-debug-non-zts-20060613/eaccelerator.so"
eaccelerator.shm_size="16"
eaccelerator.cache_dir="/tmp/eaccelerator"
eaccelerator.enable="1"
eaccelerator.optimizer="1"
eaccelerator.check_mtime="1"
eaccelerator.debug="0"
eaccelerator.filter=""
eaccelerator.shm_max="0"
eaccelerator.shm_ttl="3600"
eaccelerator.shm_prune_period="3600"
eaccelerator.shm_only="0"
eaccelerator.compress="1"
eaccelerator.compress_level="9"


# mkdir /tmp/eaccelerator
# chmod 777 /tmp/eaccelerator



2、安装Zend
  1. # tar -zxvf ZendOptimizer-3.3.9-linux-glibc23-i386.tar.gz
  2. # cp ZendOptimizer-3.3.9-linux-glibc23-i386/data/5_2_x_comp/ZendOptimizer.so /usr/local/www/php/lib/php/extensions/no-debug-non-zts-20060613/

  3. # vi /usr/local/www/php/php.ini
  4. [Zend Optimizer]
  5. zend_optimizer.optimization_level=1
  6. zend_optimizer.encoder_loader=0
  7. zend_extension="/usr/local/www/php/lib/php/extensions/no-debug-non-zts-20060613/ZendOptimizer.so"
复制代码
浏览器中打开phpinfo()那个测试页,如果出现以下内容,证明安装成功!

This program makes use of the Zend Scripting Language Engine:
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies
with eAccelerator v0.9.5.3, Copyright (c) 2004-2006 eAccelerator, by eAccelerator
with Zend Optimizer v3.3.9, Copyright (c) 1998-2009, by Zend Technologies


3、安装PDO_MYSQL
  1. # tar zxvf PDO_MYSQL-1.0.2.tgz
  2. # cd PDO_MYSQL-1.0.2/
  3. # /usr/local/www/php/bin/phpize
  4. # ./configure --with-php-config=/usr/local/www/php/bin/php-config --with-pdo-mysql=/usr/local/www/mysql
  5. # make
  6. # make install
复制代码
# vi /usr/local/www/php/php.ini
添加
extension_dir = "/usr/local/www/php/lib/php/extensions/no-debug-non-zts-20060613/"
extension="pdo_mysql.so"


七、nginx反向代理

1.Tcmalloc 优化Nginx性能

64位操作系统请先安装libunwind库,32位操作系统不要安装。libunwind库为基于64位CPU和操作系统的程序提供了基本的堆栈辗转开解 功能,其中包括用于输出堆栈跟踪的API、用于以编程方式辗转开解堆栈的API以及支持C++异常处理 机制的API。
  1. # tar zxvf libunwind-0.99-alpha.tar.gz
  2. # cd libunwind-0.99-alpha/
  3. # CFLAGS=-fPIC ./configure
  4. # make CFLAGS=-fPIC
  5. # make CFLAGS=-fPIC install
复制代码
2、安装google-perftools:
  1. # tar zxvf google-perftools-0.97.tar.gz
  2. # cd google-perftools-0.97/
  3. # ./configure
  4. # make && make install

  5. # echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf
  6. # /sbin/ldconfig
复制代码
查看是否好用,启动nginx

# lsof -n|grep tcmalloc
如果出现下面的就表示成功了


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

nginx      4322     www   10w      REG        8,2        0     682436 /var/tmp/tcmalloc.4322
nginx      4323     www   12w      REG        8,2        0     682438 /var/tmp/tcmalloc.4323
nginx      4324     www   14w      REG        8,2        0     682439 /var/tmp/tcmalloc.4324
nginx      4325     www   16w      REG        8,2        0     682440 /var/tmp/tcmalloc.4325
nginx      4326     www   18w      REG        8,2        0     682441 /var/tmp/tcmalloc.4326
nginx      4327     www   20w      REG        8,2        0     682442 /var/tmp/tcmalloc.4327
nginx      4328     www   22w      REG        8,2        0     682443 /var/tmp/tcmalloc.4328
nginx      4329     www   24w      REG        8,2        0     682444 /var/tmp/tcmalloc.4329
mysqld_sa  5284    root  mem       REG        8,2  1388088      62997 /usr/local/lib/libtcmalloc.so.0.0.0
mysqld     5397   mysql  mem       REG        8,2  1388088      62997 /usr/local/lib/libtcmalloc.so.0.0.0

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

3.安装 pcre
  1. #tar zxvf pcre-8.0.tar.gz
  2. #cd pcre-8.0
  3. #./configure
  4. #make && make install
复制代码
4、安装nginx
  1. # tar zxvf nginx-0.7.64.tar.gz
  2. # cd nginx-0.7.64
  3. # ./configure --with-http_stub_status_module --with-google_perftools_module --prefix=/usr/local/www/nginx --user=www --group=www
  4. # make && make install
复制代码
修改nginx的配置文件
我这里是把原先的重命名然后新建了一个nginx.conf

---------------------------------------------------
  1. user  www;
  2. worker_processes  8;
  3. pid  logs/nginx.pid;

  4. google_perftools_profiles /var/tmp/tcmalloc;

  5. worker_rlimit_nofile 51200;
  6. events
  7. {
  8. use epoll;
  9. worker_connections 51200;
  10. }

  11. http{

  12. include       mime.types;
  13. default_type  application/octet-stream;

  14. access_log  off;
  15. error_log  /dev/null;

  16. server_names_hash_bucket_size 128;
  17. client_header_buffer_size 32k;
  18. large_client_header_buffers 4 32k;
  19. client_max_body_size 8m;

  20. sendfile on;
  21. tcp_nopush     on;

  22. keepalive_timeout 120;
  23. #fastcgi_connect_timeout 300;
  24. #fastcgi_send_timeout 300;
  25. #fastcgi_read_timeout 300;
  26. #fastcgi_buffer_size 64k;
  27. #fastcgi_buffers 4 64k;
  28. #fastcgi_busy_buffers_size 128k;
  29. #fastcgi_temp_file_write_size 128k;
  30. tcp_nodelay on;

  31. gzip on;
  32. gzip_min_length  1k;
  33. gzip_buffers     4 16k;
  34. gzip_http_version 1.0;
  35. gzip_comp_level 2;
  36. gzip_types       text/plain application/x-javascript text/css application/xml;
  37. gzip_vary on;



  38. include vhost/*.conf;

  39. }
复制代码
---------------------------------------------


vhost/www.test.com.conf的内容

---------------------------------------------
  1. server
  2. {
  3. listen  80;
  4. server_name    www.yahunet.com;
  5. index index.html index.htm index.php;
  6. root    /var/www/;


  7. location /nginx {
  8. stub_status on;
  9. auth_basic  "NginxStatus";
  10. # auth_basic_user_file  conf/htpasswd;   
  11. #密码由apache的htpasswd工具来产生
  12. access_log off;
  13. }


  14. location / {
  15. location ~ .*\.(php|php5)?$ {
  16. index index.php;
  17. root /var/www/;
  18. proxy_pass    http://127.0.0.1:81;
  19. }


  20. include proxy.conf;

  21. if ( !-e $request_filename) {
  22. proxy_pass  http://127.0.0.1:81;
  23. }


  24. location ~* \.(jpg|jpeg|gif|png|swf)$ {
  25. if (-f $request_filename) {
  26. root /var/www/;
  27. expires    30d;
  28. break;
  29. }
  30. }
  31. location ~* \.(js|css)$ {
  32. if (-f $request_filename) {
  33. root /var/www/;
  34. expires    1d;
  35. break;
  36. }
  37. }
  38. }

  39. error_page   500 502 503 504  /50x.html;
  40. location = /50x.html {
  41. root   html;
  42. }

  43. #如果需要记录把下面的注释去掉
  44. # log_format access '$http_x_forwarded_for - $remote_user [$time_local] "$request"'
  45. #     '$status $body_bytes_sent "$http_referer"'
  46. #     '"$http_user_agent" $remote_addr';
  47. # access_log    logs/www.yahunet.com_access.log    access;

  48. }
复制代码
-------------------------------------------------



proxy.conf内容
--------------------------------------------
  1. proxy_redirect          off;
  2. proxy_set_header        Host $host;
  3. proxy_set_header        X-Real-IP $remote_addr;
  4. proxy_set_header        X-Forwarded-For   $proxy_add_x_forwarded_for;
  5. client_max_body_size    50m;
  6. client_body_buffer_size 256k;
  7. proxy_connect_timeout   30;
  8. proxy_send_timeout      30;
  9. proxy_read_timeout      60;

  10. proxy_buffer_size       4k;
  11. proxy_buffers           4 32k;
  12. proxy_busy_buffers_size 64k;
  13. proxy_temp_file_write_size 64k;
  14. proxy_next_upstream error timeout invalid_header http_500 http_503 http_404;
  15. proxy_max_temp_file_size 128m;

  16. #Nginx cache
  17. client_body_temp_path client_body 1 2;
  18. proxy_temp_path proxy_temp 1 2;

  19. #client_body_temp_path      /tmpfs/client_body_temp 1 2;
  20. #proxy_temp_path            /tmpfs/proxy_temp 1 2;
  21. #fastcgi_temp_path          /tmpfs/fastcgi_temp 1 2;
复制代码
----------------------------------------------

修改apache的端口为81


启动 nginx
#/usr/local/www/nginx/sbin/nginx

然后我们用IE测试一下 http://IP地址或域名  就可以看到nginx的默认的页面证明nginx已经启动

关闭 nginx
# kill -QUIT `cat /usr/local/www/nginx/logs/nignx.pid`

重启 nginx
# kill -HUP `cat /usr/local/www/nginx/logs/nignx.pid`



把nginx加入到系统服务
  1. # vi /etc/rc.d/init.d/nginx


  2. #!/bin/bash
  3. # Startup script for the nginx Web Server
  4. # chkconfig: - 85 15
  5. # description: nginx is a World Wide Web server. It is used to serve
  6. # HTML files and CGI.
  7. # processname: nginx
  8. # pidfile: /usr/local/www/nginx/logs/nginx.pid
  9. # config: /usr/local/www/nginx/conf/nginx.conf
  10. PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
  11. export PATH
  12. NGINX_HOME=/usr/local/www/nginx/sbin
  13. NGINX_CONF=/usr/local/www/nginx/conf
  14. if [ ! -f "$NGINX_HOME/nginx" ]
  15. then
  16. echo "nginxserver startup: cannot start"
  17. exit
  18. fi
  19. case "$1" in
  20. 'start')
  21. $NGINX_HOME/nginx -c $NGINX_CONF/nginx.conf
  22. echo "nginx start successful"
  23. ;;
  24. 'stop')
  25. killall -TERM nginx
  26. ;;
  27. esac


  28. # chmod a+x /etc/rc.d/init.d/nginx
  29. # chkconfig --add nginx
  30. # chkconfig nginx on
复制代码
八、用tmpfs加速nginx和php

1、加速nginx

# mkdir /tmpfs

编辑/etc/fstab,加入

tmpfs   /tmpfs    tmpfs   size=1024m,mode=1777   0 0

编辑/usr/local/nginx/conf/proxy.conf,将 缓存目录均指向/tmpfs

client_body_temp_path      /tmpfs/client_body_temp 1 2;
proxy_temp_path            /tmpfs/proxy_temp 1 2;
fastcgi_temp_path          /tmpfs/fastcgi_temp 1 2;


此分区可视情况适当调整大小,此处设置为1G


2、加速php

# mkdir /tmpfs/eaccelerator
# chmod 777 /tmpfs/eaccelerator

# vi /usr/local/www/php/php.ini
eaccelerator.cache_dir="/tmp/eaccelerator"
改为:
eaccelerator.cache_dir="/tmpfs/eaccelerator"


注:/tmpfs重启后就没有了,eaccelerator需要手工创建
可以写一个创建eaccelerator目录的 脚本
  1. # vi /usr/local/www/eacc.sh

  2. #!/bin/sh
  3. /bin/mkdir /tmpfs/eaccelerator
  4. /bin/chmod 777 /tmpfs/eaccelerator
  5. /etc/init.d/httpd restart

  6. # chmod a+x /usr/local/www/eacc.sh
  7. # echo "/usr/local/www/eacc.sh">>/etc/rc.local
复制代码
九、优化Linux内核参数
  1. # vi /etc/sysctl.conf

  2. 在末尾增加以下内容:

  3. net.ipv4.tcp_fin_timeout = 30
  4. net.ipv4.tcp_keepalive_time = 300
  5. net.ipv4.tcp_syncookies = 1
  6. net.ipv4.tcp_tw_reuse = 1
  7. net.ipv4.tcp_tw_recycle = 1
  8. net.ipv4.ip_local_port_range = 5000    65000
  9. net.ipv4.tcp_max_syn_backlog = 8192
  10. net.ipv4.tcp_max_tw_buckets = 5000
  11. net.ipv4.tcp_synack_retries= 1
  12. net.ipv4.tcp_syn_retries = 1

  13. 使配置立即生效:
  14. # /sbin/sysctl -p

  15. # vi /etc/security/limits.conf

  16. *                soft   nofile          51200
  17. *                hard   nofile          102400
  18. *                soft   noproc          51200
  19. *                hard   noproc          102400

  20. # ulimit -SHn 51200
复制代码
十、Apache优化

1 apache-mpm.conf

httpd.conf去注释
  1. Include conf/extra/httpd-mpm.conf

  2. # vi /usr/local/www/apache/conf/extra/httpd-mpm.conf

  3. <IfModule mpm_prefork_module>
  4. ServerLimit           1024
  5. StartServers          15
  6. MinSpareServers       15
  7. MaxSpareServers       30
  8. MaxClients            1024
  9. MaxRequestsPerChild   0
  10. </IfModule>
复制代码
-------------------------------
ServerLimit
默认的MaxClient最大是256个线程,如果想设置更大的值,就的加上ServerLimit这个参数。20000是ServerLimit这个参数的最大值。如果需要更大,则必须编译apache,此前都是不需要重新编译Apache。
-------------------------------

2 apache-keepalive

httpd.conf去注释
  1. # Include conf/extra/httpd-default.conf

  2. # vi /usr/local/www/apache/conf/extra/httpd-default.conf

  3. Timeout 120   #与nginx的保持一至
  4. KeepAlive On
  5. MaxKeepAliveRequests 1000
  6. KeepAliveTimeout 5
复制代码
十一、MYSQL 的优化

1、Tcmalloc 优化mysql性能

# vi /etc/init.d/mysqld

添加一行export LD_PRELOAD=/usr/local/lib/libtcmalloc.so

重新启动mysql

# lsof -n|grep tcmalloc
如果出现下面的就表示成功了


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

nginx      4322     www   10w      REG        8,2        0     682436 /var/tmp/tcmalloc.4322
nginx      4323     www   12w      REG        8,2        0     682438 /var/tmp/tcmalloc.4323
nginx      4324     www   14w      REG        8,2        0     682439 /var/tmp/tcmalloc.4324
nginx      4325     www   16w      REG        8,2        0     682440 /var/tmp/tcmalloc.4325
nginx      4326     www   18w      REG        8,2        0     682441 /var/tmp/tcmalloc.4326
nginx      4327     www   20w      REG        8,2        0     682442 /var/tmp/tcmalloc.4327
nginx      4328     www   22w      REG        8,2        0     682443 /var/tmp/tcmalloc.4328
nginx      4329     www   24w      REG        8,2        0     682444 /var/tmp/tcmalloc.4329
mysqld_sa  5284    root  mem       REG        8,2  1388088      62997 /usr/local/lib/libtcmalloc.so.0.0.0
mysqld     5397   mysql  mem       REG        8,2  1388088      62997 /usr/local/lib/libtcmalloc.so.0.0.0

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

2、优化/etc/my.cnf

1)确认在“[mysqld]”部分加入了“skip-innodb”和“skip-bdb”参数;
2)确认在“[mysqld]”部分加入了“skip-name-resolve”和“skip-locking”参数;
3)如果不需要的话,可以将二进制 日志(binlog)停掉,方法是将“log-bin”注释掉;
4)在内存允许的情况下,对一些参数进行重新配置,目标在于将大部分操作集中于内存中,尽量不进行磁盘操作,对于我的 MYSQL 服务器我是如下修改的,基于 2G 内存情况:
  1. [mysqld]
  2. key_buffer=512M
  3. max_allowed_packet=4M
  4. table_cache=1024
  5. thread_cache=64
  6. join_buffer_size=32M
  7. sort_buffer=32M
  8. record_buffer=32M
  9. max_connections=512
  10. wait_timeout=120
  11. interactive_timeout=120
  12. max_connect_errors=30000
  13. long_query_time=1
  14. max_heap_table_size=256M
  15. tmp_table_size=128M
  16. thread_concurrency=8
  17. myisam_sort_buffer_size=128M
复制代码
你可以根据“show status” 命令返回的状态进行微调。我主要注意以下变量的数值,越小越好,最好为零:)
Created_tmp_disk_tables
Created_tmp_tables
Created_tmp_files
Slow_queries


在启动脚本中使用“--log-slow-queries=/home/logs/mysql_slow.log”参数,以便进行 SQL 语句的优化工作,这个其实是很很重要的工作。记得一定要在 my.cnf 中设置“long_query_time=1”才行。

你可能感兴趣的:(apache,nginx,服务器,Zend,eaccelerator)