Apache问题优化
Apache 自动关闭的问题:
以前遇到这问题…只会重启解决 , 而且Apache也没办法启动(除了重启机子). 发信询问Directadmin技术后 , 只需要清理ipcs信号即可
官方原文 : https://help.directadmin.com/item.php?id=572
只需要在 /etc/cron.hourly/ipcs_check 该文件(如果没有请创建) , 写入以下内容 (我稍微精简了一下 , 将发送邮件提醒部分去除了)
#!/bin/sh MAX_SEMAPHORES=15 IPCS=/usr/bin/ipcs IPCRM=/usr/bin/ipcrm COUNT=`${IPCS} | grep apache | wc -l` if [ "$COUNT" -le $MAX_SEMAPHORES ]; then #all is well, there are no semaphore build-ups. exit 0; fi #we have more than MAX_SEMAPHORES, so clear them out and restart Apache. LIST=/root/sem.txt ${IPCS} | grep apache | awk '{print $2}' > ${LIST} for i in `cat ${LIST}`; do { ${IPCRM} -s $i; }; done; /etc/init.d/httpd restart exit 1;
然后给该文件赋予执行权限 , 可执行以下命令赋予
chmod 755 /etc/cron.hourly/ipcs_check
并重启 , 如果问题依旧 . 请尝试更改内核参数 , 将一下两个参数追加到 /etc/systpl.conf 末尾即可
kernel.msgmni = 1024 kernel.sem = 250 256000 32 1024
MYsql问题优化
在优化MySQL性能这方面我选用了TCMalloc来实现。
什么是TCMalloc
TCMalloc(Thread-Caching Malloc)与标准glibc库的malloc实现一样的功能,但是TCMalloc在效率和速度效率都比标准malloc高很多。TCMalloc是google-perftools工具中的一个(gperftools四个工具分别是:TCMalloc、heap-checker、heap-profiler和cpu-profiler),这个工具是开源的,以源码形式发布。如果觉得自己维护一个内存分配器麻烦的话,可以考虑将TCMalloc静态库连接到你的程序中。使用的时候和glibc中的malloc调用方式一模一样。你需要做的只是把TCMalloc的动态库或者静态库连接进你的程序中,你就可以获得一个高效,快速,安全的内存分配器。
与标准的glibc库的malloc相比,TCMalloc在内存的分配效率和速度要高,可以在高并发的情况下很好的控制内存的使用,提高服务器的性能,降低负载。
如何安装TCMalloc
首先,以root账户登陆服务器。
如果服务器采用64位的Centos,则需要先安装libunwind库,32位系统可略过此步。
wget http:
//download.savannah.gnu.org/releases/libunwind/libunwind-0.99-alpha.tar.gz
tar zxvf libunwind-0.99-alpha.tar.gz
cd libunwind-0.99-alpha/
CFLAGS=-fPIC ./configure
make CFLAGS=-fPIC
make CFLAGS=-fPIC install
接下来,我们开始安装Tcmalloc。
wget http:
//gperftools.googlecode.com/files/gperftools-2.0.tar.gz
tar zxvf gperftools-2.0.tar.gz
cd gperftools-2.0/
./configure
make && make install
echo
“/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf
/sbin/ldconfig
编译完成后,我们编辑mysqld_safe文件,加入Tcmalloc部分。
vi /usr/bin/mysqld_safe
找到# executing mysqld_safe,在下面加入:
export LD_PRELOAD=/usr/local/lib/libtcmalloc.so
保存,退出,重启MySQL。
service mysqld restart
接下来再检查是否生效,运行。
lsof -n | grep tcmalloc
若看到类似如下内容,即表示成功。
mysqld 7758 mysql mem REG 253,0 1943001 109233156 /usr/local/lib/libtcmalloc.so.4.1.0
修改DirectAdmin配置文件
DirectAdmin默认的MySQL配置文件还真是非常的简洁。
[mysqld]
local-infile=0
我们需要修改配置文件,参考下面的内容(vim /etc/my.cnf)
[mysqld]
local-infile=0
skip-locking
query_cache_limit=1M
query_cache_size=32M
query_cache_type=1
max_connections=500
interactive_timeout=100
wait_timeout=100
connect_timeout=10
thread_cache_size=128
key_buffer=16M
join_buffer=1M
max_allowed_packet=16M
table_cache=1024
record_buffer=1M
sort_buffer_size=2M
read_buffer_size=2M
max_connect_errors=10
# Try number of CPU’s*2 for thread_concurrency
thread_concurrency=4
myisam_sort_buffer_size=64Mserver-id=1
[safe_mysqld]
err-log=/var/log/mysqld.log
open_files_limit=8192
[mysqldump]
quick
max_allowed_packet=16M
[mysql]
no-auto-rehash
#safe-updates
[isamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[myisamchk]
key_buffer=64M
sort_buffer=64M
read_buffer=16M
write_buffer=16M
[mysqlhotcopy]
interactive-timeout
以上配置内容来自DirectAdmin官方帮助中心(http://help.directadmin.com/item.php?id=44),大家请根据自己的情况自行修改参数。
完成后保存,退出,重启MySQL。
/sbin/service mysqld restart
OK,关于DirectAdmin主机面板下的MySQL性能优化就全部完成,接下来可以去观察下你的MySQL性能有没得到质的飞跃。
Directadmin软件性能优化
升级到Custom Build 2.0
在SSH中执行以下命令即可升级到CB2.0 , CB2.0有大量新组件可用 (但是PHP5.2被废弃) . 升级耗时较长 , 请在screen里面执行 , 避免掉线中断
cd /usr/local/directadmin mv custombuild custombuild_1.x wget -O custombuild.tar.gz http://files.directadmin.com/services/custombuild/2.0/custombuild.tar.gz tar xvzf custombuild.tar.gz cd custombuild ./build ./build all d ./build rewrite_confs
升级MySQL为MariaDB
升级过程中 , MySQL的数据将会被自动备份到 /usr/local/directadmin/custombuild/mysql_backups 中 , 升级失败会自动回滚
cd /usr/local/directadmin/custombuild ./build set mysql_inst mariadb ./build set mariadb 10.1 ./build mysql
将Apache替换成Apahce(后端)+Nginx(前端)
这样做好处非常多 而且没有坏处 , 可以直接使用.htaccess重写规则 . nginx的高并发能力 , 执行以下命令进行升级
cd /usr/local/directadmin/custombuild ./build set webserver nginx_apache ./build nginx_apache ./build rewrite_confs
将php运行模式更改成php-fpm
php-fpm隔离性强 性能佳 跑php的不二选择, 执行以下命令进行更改
cd /usr/local/directadmin/custombuild ./build set php1_mode php-fpm ./build set php2_mode php-fpm ./build php ./build rewrite_confs