• 使用jemalloc优化swoole内存分配性能
    • 关于jemalloc
    • 安装jemalloc
    • 使用jemalloc
    • 预先载入

    使用jemalloc优化swoole内存分配性能

    现已不建议使用jemalloc, 可能会降低程序稳定性 建议使用标准的malloc和PHP官方提供的emalloc (默认)

    关于jemalloc

    jemalloc是一个比glibc malloc更高效的内存池技术,在Facebook公司被大量使用,在FreeBSD和FireFox项目中使用了jemalloc作为默认的内存管理器。使用jemalloc可以使程序的内存管理性能提升,减少内存碎片。

    安装jemalloc

    • GITHUB主页:https://github.com/jemalloc/jemalloc
    • 下载地址:https://github.com/jemalloc/jemalloc/releases/tag/4.0.4
      编译安装:
    1. cd jemalloc
    2. ./configure --with-jemalloc-prefix=je_
    3. make -j 4

    使用jemalloc

    编译Swoole时增加—with-jemalloc-dir=/path/to/jemalloc

    1. phpize
    2. ./configure --with-jemalloc-dir=/path/to/jemalloc
    3. make
    4. make install

    预先载入

    除了手工编译jemalloc增加命名空间的使用方式之外也可以使用LD_PRELOAD使用jemalloc。此方法也可以用于Googletcmalloc内存池技术。

    1. LD_PRELOAD="/usr/lib/libjemalloc.so" php server.php
    2. LD_PRELOAD="/usr/lib/libtcmalloc.so" php server.php
    /usr/lib/libjemalloc.so 请填写正确的jemalloc.so路径