Thread-Caching Malloc (google-perftools) 專為多線程 C++ 應用優化的記憶體分配器,比 glibc 2.3+ malloc 更快、碎片更少、高併發下記憶體曲線更平滑。適用於 MySQL、Nginx 等高併發服務。
LNMP 腳本預設對 MySQL、Nginx 採用靜態編譯,執行期無法動態載入 libtcmalloc.so。必須修改安裝腳本,在 ./configure 參數中加入編譯選項,並在安裝 LNMP 前先編譯安裝 TCMalloc。
wget https://github.com/gperftools/gperftools/releases/download/gperftools-2.10/gperftools-2.10.tar.gz tar xzf gperftools-2.10.tar.gz cd gperftools-2.10 ./configure make && make install echo "/usr/local/lib" > /etc/ld.so.conf.d/usr_local_lib.conf ldconfig
wget https://soft.vpser.net/lnmp/lnmp1.9.tar.gz # 以最新版為例 tar xzf lnmp1.9.tar.gz cd lnmp1.9 vi centos.sh # 或對應發行版腳本
# 尾部追加 --with-mysqld-ldflags=-ltcmalloc
# 尾部追加 --with-google_perftools_module
./centos.sh
mkdir -p /tmp/tcmalloc chown -R www:www /tmp/tcmalloc vi /usr/local/nginx/conf/nginx.conf # 在 worker_rlimit_nofile 附近加入 google_perftools_profiles /tmp/tcmalloc/; # 重載 nginx -s reload
lsof -n | grep tcmalloc # 應見 nginx 與 mysqld 進程持有 libtcmalloc.so