产品服务AMH 免费服务器主机面板SSL证书 免费SSL证书申请 担保单 免费安全、零费率交易平台编程助手免费智能写代码、翻译AMYSQL 免费MySQL管理工具

AMH 社区首页

 AMH社区 - 开放自由有价值的社区

[求助帖] 写了一个利用Google_perftools优化Ngixn和Mysql的Module

isha
银牌会员
2907.00 价值分

isha 发表于 2013-04-22 18:33:01
本帖最后由 isha 于 2013-4-22 18:34 编辑

写了一个利用Google_perftools优化Ngixn和Mysql的Module,里面还有些不会希望管理能指点下,如果管理想完善就完善吧,其实我觉得这个直接加载到服务器的默认安装包里面比较好, 我不会的就是那个卸载部分不知道该怎么写了 - -!

我在自己服务器上有这个优化加速觉得效果还不错 所以就献丑了嘿嘿 - -!

本地用虚拟机安装的amh然后测试的效果截图




#!/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin;

#info
function amh_module_info()
{
echo 'AMH-ModuleName: TCMalloc-1.0';
echo 'AMH-ModuleDescription: TCMalloc (google-perftools) 是用于优化C++写的多线程应用,比glibc 2.3的malloc快。这个模块可以用来让MySQL在高并发下内存占用更加稳定。 此模块用来优化Nginx&Msql';
echo 'AMH-ModuleButton: 安装/卸载';
echo 'AMH-ModuleDate: 2013-04-22';
echo 'AMH-ModuleAdmin: ./index.php?c=TCMalloc';
echo 'AMH-ModuleWebSite: http://amysql.com';
echo 'AMH-MoudleScriptBy: iSha丶';
}

#install
function amh_module_install()
{
if amh_module_status ; then
exit;
else
cd /usr/local/;
# gperftools 优化进程
wget https://gperftools.googlecode.com/files/gperftools-2.0.tar.gz;
# 针对 64 位操作系统必须安装 libunwind 库
wget http://download.savannah.gnu.org ... bunwind-1.1.tar.gz;
# 安装 pcre 使 nginx 支持 URL 重写
# wget ftp://ftp.csx.cam.ac.uk/pub/soft ... re/pcre-8.31.tar.gz
# 利用 TCMalloc 优化 nginx 性能
tar zxvf libunwind-1.1.tar.gz;
cd libunwind-1.1/;
CFLAGS=-fPIC ./configure;
make CFLAGS=-fPIC;
make CFLAGS=-fPIC install;
cd ../;
# 安装 google-perftools 优化
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;
cd ../;
# 安装 pcre
# tar zxvf pcre-8.31.tar.gz
# cd pcre-8.31
# ./configure
# make && make install
# cd ../
# 开始编译 Nginx 加速
#./configure --prefix=/usr/local/nginx --with-google_perftools_module --user=www --group=www --with-pcre=/mydata/soft/pcre-8.31;
cd /root;
wget http://amysql-amh.googlecode.com/files/nginx-1.2.7.tar.gz;
tar zxf nginx-1.2.7.tar.gz;
cd nginx-1.2.7;
./configure --prefix=/usr/local/nginx --user=www --group=www --with-google_perftools_module --with-http_ssl_module --with-http_gzip_static_module --without-mail_pop3_module --without-mail_imap_module --without-mail_smtp_module --without-http_uwsgi_module --without-http_scgi_module;
make;
# 替换nginx二进制文件
cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak;
unalias cp;
cp -f ./objs/nginx /usr/local/nginx/sbin/;
mkdir /tmp/tcmalloc;
chmod 0777 /tmp/tcmalloc;
rm -rf /root/nginx-1.2.7;
rm -rf /root/nginx-1.2.7.tar.gz;
# 修改nginx.conf载入Tcmalloc
sed '4 agoogle_perftools_profiles /tmp/tcmalloc;' -i /usr/local/nginx/conf/nginx.conf;
# 重启Nginx
amh nginx restart;
# 修改mysqld_safe载入libtcmalloc.so
sed -i '/executing mysqld_safe/aexport LD_PRELOAD=/usr/local/lib/libtcmalloc.so' /usr/local/mysql/bin/mysqld_safe;
# 重启Mysql
amh mysql restart;

##########################################################################
# 从这部分开始我不知道该怎么弄了 - -! 在本地测试完成了上面的功能
##########################################################################
if amh_module_status ; then
exit;
else
cd /root/amh/modules/TCMalloc-1.0;
\cp ./Controller/TCMalloc.php /home/wwwroot/index/web/Controller/;
\cp ./View/TCMalloc_html.php /home/wwwroot/index/web/View/;
amh_module_status;
fi;
}

#admin
function amh_module_admin()
{
if amh_module_status ; then
echo '[OK] TCMalloc No management options.';
else
exit;
fi;
}

#uninstall
function amh_module_uninstall()
{
if amh_module_status ; then
rm -f /home/wwwroot/index/web/Controller/MyModule.php /home/wwwroot/index/web/View/MyModule_html.php;
echo '[OK] MyModule Uninstall successful.';
else
exit;
fi;
}

#status
function amh_module_status()
{
if [ -f "/home/wwwroot/index/web/Controller/MyModule.php" ]; then
echo '[OK] MyModule is already installed.';
return 0;
else
echo '[Notice] MyModule is not installed.';
return 1;
fi;
}






2013-04-22 18:33:01 1

isha
银牌会员
2907.00 价值分

有时间再把那个php的页面完善了 就把这个包 给给 amh 让他测试
  支持 (0分)  反对 (0分)
回复  2013-04-22 18:45:07 2

admin
创始人
32148.75 价值分

这要支持,什么时候发个模块包,我也测试测试。
有几个地方要改进一下 : )

1、
安装模块的amh_module_install函数内,nginx重新安装了话要先判断用户原先安装哪些Nginx模块,不要冲掉原先已安装的Nginx模块,像用户如果已经安装了AMProxy-1.0这个模块,这个模块是用到Nginx其它模块的:
http://amysql.com/bbs/post-227-1-1.htm
可以先/usr/local/nginx/sbin/nginx -V; 取得Nginx原先安装的配置,然后再组织Nginx的 ./configure 的参数。

2、然后你说不知怎么写卸载啊,卸载就是你amh_module_install函数里做过哪些软件的安装,就把它rm掉啊。Nginx也去掉你增加的模块重装回原先样,哪些配置有改动过也还原回去~
都写在amh_module_uninstall函数中就好了。


3、amh_module_status这个模块安装状态判断,也要改一下,
只要能判断出你写的模块是否安装就好拉。

if [ -f "/home/wwwroot/index/web/Controller/MyModule.php" ]; then
像上面就是用以这个/home/wwwroot/index/web/Controller/MyModule.php文件进行判断,
存在这个文件就是说明已安装了,这个可以根据你模块实际安装后的特征判断一下就好了。


模块开发详细教程也可以看这帖子:
http://amysql.com/bbs/post-215-1-1.htm




  支持 (0分)  反对 (0分)
回复  2013-04-22 20:28:29 3

AMH官方号 2011~2021 (10周年)

小孤独
铝牌会员
219.00 价值分

这个好`~~
多来点优化的东西,最后实现模块化~~
  支持 (0分)  反对 (0分)
回复  2013-04-23 16:39:40 4

baby100
铜牌会员
958.66 价值分

这么好的东西为什么不加到模块扩展里呢
  支持 (0分)  反对 (0分)
回复  2014-04-30 11:46:57 5

kimwang
银牌会员
1873.39 价值分

期待这个模块。
  支持 (0分)  反对 (0分)
回复  2016-05-21 14:37:18 6

dhdz187
铜牌会员
581.00 价值分

期待这个模块。 .
  支持 (0分)  反对 (0分)
回复  2016-07-20 09:59:18 7
 1  (总1页)
AMH社区列表
用户服务中心