以下の記事です。
以上の三つの詳細を扱ったエントリです。TCP で大規模なトラフィックを扱っているサーバを扱われている場合、問題がないかどうかを確かめてみるとよいかと思います。
本文長いです。何に気をつけたらいいんでしょう?
プラクティカルな話だけをまとめると、以下の4行です。
- memory pressure モードに入ってしまうと warning です
- TCP out of memory が出てしまうと critical です
- 監視は /proc/ 以下のファイルを見ましょう
- チューニングは net.ipv4.tcp_mem で行いましょう
LVS はどうなの?
LVS でロードバランシングしている場合は、TCP スタックを通らないため TCP oom や memory pressure モードは問題にならないと思います ( LVS のソースは呼んだことないので、確実ではないですが ... )
定量的な評価はしなかったのか?
Q「パフォーマンス」に触れているが、はたして、どれくらい性能に影響する問題なのですか? A. すいません。測定してないです。
ソースを読んだ上での定性的な評価のみです。
定量的な評価はできませんでした。ツールの選定を始め、どのようにシミュレート環境を作るべきかが分からず 手を出せませんでした。力不足に尽きますね。
落穂拾い的な話
- TCP/IP の理解が浅いところからスタートで、初歩の初歩から学び直しが必要だった。
- ソースと書籍を読みあさって、お正月から 一ヶ月〜二ヶ月くらい費やしました。(コロナのせいでしばらく記事を寝かせていた)
- 調査の過程で「TCP のパケットドロップってどういう条件で起きるんだ?」という長年の疑問が解決されたのもよかった
記事を書いた時に頻繁に参照したのが、以下の書籍です。
https://www.amazon.co.jp/dp/0470147733www.amazon.co.jp
TCP/IP Architecture, Design, and Implementation in Linux は、Linux カーネル 2.4系のソースを併記しながら TCP/IP スタックを細かく解説するカーネル本です。2.4 系であっても参考となる箇所は多く、この本がないと調べきるのは難しかったなと思います。編集や校正が詰めきれてないのか、ところどころアラが目立つ書籍ではあるので、ご注意を ... 。