Category: Tech

  • Centos升级GD

    Centos上的图形处理一直都是很抽风的事情,Java很麻烦,C很麻烦,连PHP也很麻烦,PHP很抽风的是,它没有任何提示。

    当你把PHP runtime从5.4升级以后,Centos自带的GD库就fail了,因为OS中最高的版本不超过2.1,但是,从PHP5.5开始,默认支持的GD库就已经是2.1了,低版本的GD库调用不了,而且没有任何提示,之前很长一段时间我纠结于Wordpress的图形处理功能突然失效无法生成thumbnail,虽说使用ImageMagick的plugin解决了部分的问题,但总觉得有个bug在那里,却找不到原因,也想过是GD的问题,但从未想过是版本的问题。

    下面我们来升级Centos中的GD,虽说我最爱的OS是FreeBSD,但是很多新功能在FreeBSD上不受支持,很是让人困扰。

    首先download source code,

    cd /tmp
    wget https://github.com/libgd/libgd/archive/gd-2.1.1.tar.gz
    tar zxf gd-2.1.1.tar.gz
    cd libgd-gd-2.1.1

    GD的source code是多平台一个package发布的,没有默认的configure,所以根据docs提示我们需要多几个步骤,当运行autoconf报错的时候,可能是缺少aclocal,automake,关键的一步是当automake提示–add-missing的时候,需要使用autoreconf -i,所以发布一个跨平台的source code package,是让人多么困扰的idea。当autoreconf -i之后,就可以正常configure和make了,和普通的编译没有什么区别,这里我们prefix在/usr/local/gd,很自然,我们在编译PHP的时候就需要添加类似的参数了, ./configure –with-gd=/usr/local/gd,最后出来的大概就是这样一个效果:

    20150227001

    如此之后,PHP5.5和PHP5.6中的GD才会正常operation,否则都是a piece of shit,即使phpinfo里面提示bundled正常,那也是一坨屎,可惜的是Wordpress默认只支持GD,如果支持ImageMagick应该更好些。

    如下,这是木有用的。

    20150227002

  • Tomcat的上传设置和开机自启动

    Tomcat的确还是轻量了些,测试中需要上传一个比较大的文件,约5M,在上传过程中报错,查找原因,发现默认配置最大只能上传2M,所以呢在配置文件server.xml中配置Connector时可以指定maxPostSize属性来限制上传文件的大小,我们这里设置为

    maxPostSize=”0″

    对上传的文件大小不作限制,当然了如果前端还有代理服务,上面的超时时间可能也是需要改改的。

    然后再把日志部分设置一下,我嚓,不加标签wordpress居然会把下面这段给吞了。

    <Valve className="org.apache.catalina.valves.AccessLogValve" directory="logs"
    
                   prefix="../../../../tmp/www.cia.gov.log-" suffix=""
    
    pattern="combined" fileDateFormat="yyyyMMdd"/>

    Tocmat自启动约莫有两种方式,这两种方式各有特点。

    第一种,使用jsvc开机脚本启动,这种方式的特点是,开机启动,tomcat可以运行在80端口,但子进程可以其它非root用户运行,www用户是可以对tomcat目录文件进行读写的,大家知道在Unix系统中普通用户是无法把服务开放在80端口的,这个脚本如下所示,呵呵,当然还需要编译jsvc了,自己去查,多说无益,乖,这种方式比较适合于使用war包批量部署的情况。 (more…)

  • Google perftools上的Nginx

    项目做完了,总结一下,先总结个nginx。

    Nginx在添加了Google的perftools之后,性能表现的确要好很多, TCMalloc的全称为Thread-Caching Malloc,是谷歌开发的开源工具google-perftools中的一个成员。与标准的glibc库的Malloc相比,TCMalloc库在内存分配效率和速度上要高很多,这在很大程度上提高了服务器在高并发情况下的性能,从而降低了系统的负载。

    要安装TCMalloc库,需要安装libunwind(32位操作系统不需要安装)和google-perftools两个软件包,libunwind库为基于64位CPU和操作系统的程序提供了基本函数调用链和函数调用寄存器功能。
    http://download.savannah.gnu.org/releases/libunwind
    libunwind
    ./configure && make && make install
    http://google-perftools.googlecode.com
    google-perftools
    ./configure && make && make install
    echo “/usr/local/lib” > /etc/ld.so.conf.d/usr_local_lib.conf
    ldconfig

    编译起来呢是很简单的,nginx的编译参数加上(–with-google_perftools_module)就可以了,相同的并发数量下,CPU的负荷下降了不少,但是内存占用,由于nginx本来内存占用就比较小,所以可忽略不计了。