TL;DR:更新你的bin/qgtunnel
.
我最近注意到我的网络测功机的内存使用量有所增加。经过一番挖掘,我可以看到LD_PRELOAD
应该使用heroku-buildpack-jemalloc设置的变量设置不正确。我使用了一个小脚本 ( bin/show_preload
),它帮助我调试它并跟踪哪个程序被覆盖LD_PRELOAD
。
#!/usr/bin/env bash
echo "buildpack=foo preload='$LD_PRELOAD' at=start-app cmd='$@'"
$@
我在我们的Procfile
:
web: bin/show_preload bin/qgtunnel bin/show_preload bin/start-nginx bin/show_preload bin/start-pgbouncer bin/show_preload bundle exec puma -C config/puma.rb
当在 heroku 上启动时,我可以看到它bin/qgtunnel
覆盖了我们的LD_PRELOAD
配置。
我暂时创建了一个小助手,以确保我保持原始价值以及通过以下方式添加的内容bin/qgtunnel
:
#!/usr/bin/env bash
after_qgtunnel_script=$(mktemp)
echo <<-BASH > $after_qgtunnel_script
# Retrieve previous LD_PRELOAD value
export LD_PRELOAD="\$LD_PRELOAD $LD_PRELOAD"
# Clean after usage
rm $after_qgtunnel_script
# Start following commands
$@
BASH
chmod +x $after_qgtunnel_script
bin/qgtunnel $after_qgtunnel_script $@
如果您需要此脚本,请使用它代替 bin/qgtunnel