0

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

4

1 回答 1

0

在与 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"

注意:自那以后可能会出现新版本,请参阅相关文档

于 2021-04-12T14:12:40.363 回答