AMH 社区首页
AMH社区 - 开放自由有价值的社区
[求助帖] 写了一个利用Google_perftools优化Ngixn和Mysql的Module |
|
---|---|
isha |
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; }
点赞,加油! (1分)
2013-04-22 18:33:01 1
|
isha |
有时间再把那个php的页面完善了 就把这个包 给给 amh 让他测试
回复
2013-04-22 18:45:07 2
|
admin |
这要支持,什么时候发个模块包,我也测试测试。
有几个地方要改进一下 : ) 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
回复
2013-04-22 20:28:29 3
AMH官方号 2011~2021 (10周年) |
小孤独 |
这个好`~~
多来点优化的东西,最后实现模块化~~
回复
2013-04-23 16:39:40 4
|
baby100 |
这么好的东西为什么不加到模块扩展里呢
回复
2014-04-30 11:46:57 5
|
kimwang |
期待这个模块。
回复
2016-05-21 14:37:18 6
|
dhdz187 |
期待这个模块。 .
回复
2016-07-20 09:59:18 7
|