LD_PRELOAD 不适用于 Heroku + jemalloc + quotaguard
LD_PRELOAD not working on Heroku + jemalloc + quotaguard
TL;DR: 更新你的 bin/qgtunnel
.
我最近注意到我的网络测功机的内存使用量有所增加。经过一番挖掘,我发现应该设置 heroku-buildpack-jemalloc 的 LD_PRELOAD
变量设置不正确。我使用了一个小脚本 (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
联系 Quotaguard 后,他们修补了 qgtunnel
二进制文件,现在没有错误了:
curl https://quotaguard.s3.amazonaws.com/qgtunnel-2.4.1.tar.gz | tar xz
git add bin/qgtunnel vendor/nss_wrapper/libnss_wrapper.so
git commit -m "Update qgtunnel to fix LD_PRELOAD"
注意:自那个版本之后可能会出现新版本,请参阅the related documentation
TL;DR: 更新你的 bin/qgtunnel
.
我最近注意到我的网络测功机的内存使用量有所增加。经过一番挖掘,我发现应该设置 heroku-buildpack-jemalloc 的 LD_PRELOAD
变量设置不正确。我使用了一个小脚本 (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
联系 Quotaguard 后,他们修补了 qgtunnel
二进制文件,现在没有错误了:
curl https://quotaguard.s3.amazonaws.com/qgtunnel-2.4.1.tar.gz | tar xz
git add bin/qgtunnel vendor/nss_wrapper/libnss_wrapper.so
git commit -m "Update qgtunnel to fix LD_PRELOAD"
注意:自那个版本之后可能会出现新版本,请参阅the related documentation