2020年3月24日のブックマーク (3件)

  • 不具合から見る go の database/sql の挙動 - UUUMエンジニアブログ

    nazoです。 先日、とある go で書かれたWebサーバーで、too many open files が出て死ぬ、という問題が発生しました。今回はその点に関して調査した内容を紹介したいと思います。 調査内容と結果 too many open files は、言うまでもなく、ファイルの開きすぎで出るエラーですが、 lsof してみたところ、 can't identify protocol 状態のものが大量に存在していました。ソケットが正常に閉じられずに放置されていたようです。 さらに調査をしていると、トランザクションの Begin 〜 Commit をコメントアウトすると発生しなくなることが判明し、そこから以下のバグが発見できました。(gorm を使用しています。また実際のコードとは違います) tx := db.Begin() db.Model(&user).Where("id = ?",

    不具合から見る go の database/sql の挙動 - UUUMエンジニアブログ
    behiron
    behiron 2020/03/24
    “空きコネクションがない状態でコネクションを取ろうとすると、コネクションを取れるまで時間無制限で待つ”
  • 不具合から見る go の database/sql の挙動 - UUUMエンジニアブログ

    nazoです。 先日、とある go で書かれたWebサーバーで、too many open files が出て死ぬ、という問題が発生しました。今回はその点に関して調査した内容を紹介したいと思います。 調査内容と結果 too many open files は、言うまでもなく、ファイルの開きすぎで出るエラーですが、 lsof してみたところ、 can't identify protocol 状態のものが大量に存在していました。ソケットが正常に閉じられずに放置されていたようです。 さらに調査をしていると、トランザクションの Begin 〜 Commit をコメントアウトすると発生しなくなることが判明し、そこから以下のバグが発見できました。(gorm を使用しています。また実際のコードとは違います) tx := db.Begin() db.Model(&user).Where("id = ?",

    不具合から見る go の database/sql の挙動 - UUUMエンジニアブログ
    behiron
    behiron 2020/03/24
    “空きコネクションがない状態でコネクションを取ろうとすると、コネクションを取れるまで時間無制限で待つ”
  • ProxyCommandを使って踏み台(Bastion)経由で直接ssh/scpする | DevelopersIO

    自分の作業環境の作り直しをしているのですが、 たまに理解が怪しくなるので、確認ついでにここに吐き出しておこうと思います。 背景 「リモート環境にあるホストAにsshあるいはscpするためには、 踏み台(Bastion)となるホストXに一度SSHログインしないとならない」 というケース/環境はそこそこ多いと思います。 これがsshなのであればまあ、ssh X -> ssh Aとするだけなのでそこまででもありませんが、 scpだった場合は概ねこんな手順になりますよね。 まずssh XとしてホストXにログイン ホストX上でscp -p A:/path/to/datafile ~/(オプションはお好み) コピーが終わるのを待ってから、Xからログアウト scp -p X:~/datafile . コピーが終わるのを待ってssh X rm ~/datafile これで何が困るかというと、 コピー(sc

    ProxyCommandを使って踏み台(Bastion)経由で直接ssh/scpする | DevelopersIO
    behiron
    behiron 2020/03/24