linux apache mysql php 优化

linux apache mysql php 优化

none

一、准备环境 #

1、安装mysql #

#cmake -DCMAKE_INSTALL_PREFIX=/usr/local/mysql5.5 -DMYSQL_DATADIR=/usr/local/mysql5.5/data -DSYSCONFDIR=/usr/local/mysql5.5/etc -DWITH_INNOBASE_STORAGE_ENGINE=1 -DWITH_ARCHIVE_STORAGE_ENGINE=1 -DWITH_PERFSCHEMA_STORAGE_ENGINE=1 -DDEFAULT_CHARSET=utf8 -DDEFAULT_COLLATION=utf8_general_ci -DENABLED_LOCAL_INFILE=1 -DWITH_EXTRA_CHARSETS=all
#make
#make install

2、安装nginx #

#./configure --prefix=/usr/local/nginx --http-log-path=/var/log/nginx/access.log --error-log-path=/var/log/nginx/error.log --pid-path=/var/run/nginx/nginx.pid --user=daemon --group=daemon --with-pcre
#make && make install

3、安装php #

#./configure --prefix=/usr/local/php5 --enable-bcmath --with-mysql=/usr/local/mysql5.5 --enable-fpm --with-fpm-user=daemon --with-fpm-group=daemon --with-config-file-path=/usr/local/php5
#make && make install

4、使nginx支持php #

(1)nginx配置 #

location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /usr/local/nginx/html$fastcgi_script_name;
include fastcgi_params;
}

(2)php配置 #

#vim /usr/local/php5/etc/php-fpm.conf
#cd /usr/local/php5/sbin
#./php-fpm -c /usr/local/php5/etc/php-fpm.conf

二、php优化 #

注意:如何添加php功能模块 例:安装mbstring多字节支持功能模块

#cd /usr/src/lamp/php-5.3.10/ext \\进入要安装功能模块源码目录下
#/usr/local/php5/bin/phpize \\运行phpize命令,生成configure文件
#./configure --enable-mbstring --with-php-config=/usr/local/php5/bin/php-config
#make
#make install

#vim php.ini

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626"
extension = mbstring.so

1、php加速处理 #

(1)对php相关选项进行调整 #vim php.ini #

realpath_cache_size = 32k
realpath_cache_ttl = 600000
max_excution_time = 60
max_input_time = 120
memory_limit = 128M
display_errors = Off

(2)安装xcache #

#tar xzvf xcache-2.0.0-rc1.tar.gz
#cd xcache-2.0.0-rc1
#/usr/local/php5/bin/phpize
#./configure --enable-xcache --enable-xcache-constant --with-php-config=/usr/local/php5/bin/php-config
#make
#make install

#vim php.ini

extension_dir = "/usr/local/php5/lib/php/extensions/no-debug-non-zts-20090626"
extension = xcache.so
[xcache]
xcache.shm_scheme = "mmap"
xcache.size = 16M
xcache.count = 1
xcache.slots = 8K
xcache.ttl = 0
xcache.gc_interval = 0
xcache.var_size = 4M
xcache.var_count = 1
xcache.var_slots = 8K
xcache.var_ttl = 0
xcache.var_maxttl = 0
xcache.var_gc_interval = 300
xcache.readonly_protection = Off
xcache.mmap_path = "/dev/zero"
xcache.coredump_directory = ""
xcache.cacher = On
xcache.stat = On
xcache.optimizer = Off
xcache.test = Off
xcache.experimental = Off
[xcache.coverager]
xcache.coverager = Off
xcache.coveragedump_directory = ""

三、mysql优化 #

1、查询优化 #

query-cache-size = 16M
query-cache-type = on | off
query-cache-limit = 2M

mysql>show status like 'qcache%';

Qcache_queries_in_cache 目前mysql缓存的数目

Qcache_inserts 插入的缓存条目数 Qcache_hits 缓存命中率

Qcache_lowmem_prunes 有多少次出现缓存过低

Qcache_free_blocks 缓存碎片数量

2、排序优化 #

sort_buffer_size = 8M 设定排序缓冲区大小
max_sort_length = 8192 设定排序队列长度大小

mysql>show status like '%sort%';

Sort_merge_passes 表示排序算法已经完成的排序数量

Sort_range 表示在指定范围内的排序

Sort_rows 表示已经排序了多少行

Sort_scan 通过扫描完成的排序数量

3、索引优化 #

key_buffer_size 设置索引缓冲区大小 自定义索引缓冲区和载入索引

mysql>set global stu.key_buffer_size=8388608; 设置自定义缓冲区
mysql>load index into cache test.stu; 将索引载入到系统缓冲区
mysql>cache index test.stu in stu; 将索引加载到自定义缓冲区

4、mysql性能优化 #

concurrent_insert 是否允许数据并发插入,只对myisam引擎 thread_concurrency 定义并发线程数量

innodb_flush_log_log_trx_commit 设置日志写入文件的方式 innodb_buffer_pool_size

定义缓冲区大小,一般设为内存的80-85%

innodb_buffer_pool_instance 定义高速缓冲区可并发操作的实例数量 innodb_open_files 定义可打开的文件数

5、其它的重点优化参数 #

max_connections = 1024 设置数据库允许的最大连接数
max_connect_errors = 32 表示允许的错误连接数
innodb_log_file_size = 512M 设置日志文件大小
innodb_max_dirty_pages_pct=80 设定写入磁盘的脏数据占用的缓冲区比例