蜜壺アリ

開発:多数のVMを作って全員で互いのディスクを共有させようという作戦ですが。

基盤:同じリージョン内のライトセールVM間では50MB/sでsshできることが、引っ越しのファイル転送でわかっています。これはこの2.4GHzというCPUで乱数列を作るのと同等な速度です。確認しますと、まずCPUはコレ。

基盤:乱数データの生成と転送性能の測定。

開発:100MB/s出てますね。隣のホストとでも。

基盤:SSH接続のオーバヘッドだけの違いくらいしか。

開発:まあSSHの接続に1秒近くかかるのはよくあることですね。

基盤:あるいは、gzip で圧縮するスピードより速い。まあ乱数列には圧縮は効かないですから、最悪の場合ですけど。

開発:そういうことか。zlibで圧縮転送すると、逆にそのために最悪30MB/sに律速されるかも知れないと。

社長:100MB/sっていうと、ローカルHDDと同じ性能が出るということですね。

開発:それじゃファイル共有してみましょうか。とりあえずNFSですかね。っていってもすっかりやり方を忘れてしまいましたが。

社長:ちょいとコーヒーブレークを。 … しまった!コーヒーをばら撒いてしまった!

開発:挽いた豆ってアロマティックというか、大した量でなくてもすごい存在感というか有り難みがありますよね。お湯を通されて出しガラになったらゴミですが。

基盤:それで、本当に働きアリだけの集団で良いのか、一つミツツボアリを作るのか、という事は検討課題かなと思います。ちょっとお勧めプランを… あ、なんかポップアップした。

開発:どうやって気づいたんでしょうね。しかも今頃。3日前に作った時に一瞬だけ動かしただけなんですけど。

基盤:やっぱり、ストレージに関してはライトセールもお得感が無いですね。

開発:やはりクラウドの安いドライブをマウントして使うのかな。あるいは1台でrsyncして、それを仲間にマウントさせるとか…

社長:使い方にあった美味しい使い方ができると良いですね。

開発:ともかくNFSから始めましょう。man nfsd … あ、無いの。nfsd … 

開発:apt search nfs … なんだか本体が無いような。

基盤:そういえば試しに作ったきりにしてあるAmazon Linuxってどうなんですかね。

開発:ブラウザでターミナルできるというこのお手軽さ… あれ、nfsd あるじゃん。

基盤:こういうとこ、一事が万事だったりして。

社長:うちは別にUbuntuもBitnamiも要らないんで、Amazon Linux に身を委ねるのでも良いです。

基盤:ちょっと調査。cc … ないですね。apt search cc。おっと、apt がない。man -k package … RPM と出ました。回転毎分ですかね。

開発: RPMってRedHatだよね。Amazon Linux ってそっち系だったのか。man rpm。ふーん。rpm -q -a | grep cc。無いですよね。これ、apt get 的に探して落とすにはどうするんですかね。

基盤:この、yum ってのがそうじゃないですか?man yumによると「」うわ、Vivaludiが固まった。ウェブ端末からコピペしようとしただけなんですが。… あ、収まりました。この8GB RAMのMacMini、もう終わりだね君が遠くに見える。

経理:iMac到着して4日間。箱に入ったままです。

基盤:man yumによると「yum is similar to other high level package managers like apt-get and smart.」だそうです。

社長:確かに yum というのは昔、聞いた事も使ったこともあるような気がします。

開発:aptと同じですか。じゃ sudo yum install gcc … 「Complete!」。で cc。OK。似たようなものですね。ついでに sudo yum install golang … おー、やってるやってる。Complete!。ではおもむろにHello World…

開発:なんですかねこれ、Hello World が 1msて。なんでそんなに軽いのかよ〜♪って。Ubuntu VM でも試しましょう。

社長:うーむ、2倍速?ユーザ時間からして2倍近く違う。本当に同じハードですよね?

開発:まあ Ubuntu 16版は運用に入ってますから、サーバ動いててメモリは使ってます。でも十分空いてますよね…。CPUは全く同じ。なにしろ利用料金は同じ500円/月ポッキリです。

社長:一応確認のため、まっさらのUbuntu版を作って、性能を確認して、こういう性能差であるなら、Amazon Linux にしましょう。

基盤:それがもう、バカみたいに簡単なんですよねw。ライトセールコンソールから、インスタンスの作成。OSのみでUbuntu選択。$5プランを選択。そして作成をぷちっと。この保留中にでる「利用不可」という表現はなんだか不吉なイメージなのでやめてほしいですね。あ、できました、実行中。1分ちょっとでしたか?で、このコンソールアイコンをクリックすると端末が開く。以上です。

開発:では、sudo apt install golang … あれ?これ Unknown とかエラーが。というか Ubuntu 18 じゃないですかこれ。apt update して、再度 apt install golang。やってるやってる。なんかせっかく apt にも馴染んだのにもうお別れですか。

社長:いや、Ubuntuもまだ使うでしょ。

開発:ではお手並み拝見。

基盤:Amazon Linux と同等のようですね。

開発:うーむ、こんだけメモリが小さくてシングルコアという世界は最近足を踏み入れてなかったので、見当が狂います。

基盤:では一応、まっさらの Ubuntu 16 でも確認しましょう。…。はい、できました。

開発:では apt update して apt install golang で hello.go。あれ?やっぱり遅い。あれ?マウスが動かなくなった…

社長:ああ、それもう2ヶ月前から電池切れになっては手で温めて復活させてましたからね。

開発:ボイジャーですか。

社長:電池交換して、一服しましょう。

* * *

基盤:ていうか、せっかくだから Ubuntu 20.04 にしたいですね。

開発:まあ、いずれライトセールからも出るでしょう。

社長:実家から送ってきた地酒ですグビ。

開発:それでは気を取り直しまして再試験。

基盤:やっぱりすっからかん状態でも50%ばかり遅いですね Ubuntu 16。Goの固有の問題?

開発:さて、何を基準に。

社長:うち的には25年間、コンパイルの速度を重要なベンチマークにして来ました。それまでUnixワークステーションでやってたコンパイルをWindows PCのVC5だかでコンパイル出来た時には感動したものです。当時はそもそも各社のコンパイラを通るという事自体がとても大変なことでして…

開発:gccも警告のレベルが変わったりすると速度が色々みたいですが… とりあえずDeleGateのコンパイルで。

real 1m40.285s
user 1m27.472s
sys 0m5.472s
Ubu16%

real 1m48.868s
user 1m38.127s
sys 0m9.352s
Ubu18%

開発:あれ、Amazon Linux C++が無い… yum search gcc … これですかね sudo yum install gcc64-c++.x86_64。さて make…

real 1m42.834s
user 1m33.446s
sys 0m8.052s
AmaLin%

開発:コンパイルについては有意差が無い、ということですかね。

基盤:乱数生成も同等。これ、以前一瞬、Ubuntu16のVMが4倍くらい速いことがあったんですが、あれは何だったんでしょうね?

基盤:ディスクI/Oも大差無しです。

開発:4GBを60秒ってことは、おおよそ70MB/秒ですね。ディスクとも親しい中だと。

基盤:一方、退役する旧 delegate.org のスペックです。Ubuntu 18.04。

開発:クロックが2.3GHzとか、メモリも微妙にケチですね。

基盤:でディスクI/Oですが。アクセス量で従量課金されたりしないか一抹の不安を覚えつつベンチ…

開発:なんか No space left 出てますが(笑)

基盤:あれ確かに… Azure VM、30GBしか無いですからねえ。まあこのVM、もうすぐ廃棄だから何を切ってもいいっちゃいいんですが…

社長:いやその30GBに、8年間苦しんできたのです私は。しかも月1万円払ってですよ。これら飲まずにいられるかっつーの。

基盤:ちょっと刻んで行きます。まず 1GB の乱数発生。

開発:なるほど。前々からこのベンチはとてもデリケートで面白いですね。6倍の性能差がサクッと出る。

基盤:というか、ローカルなメモリリッチマシンではこんな感じなわけです。さらにドンと6倍。合わせて36倍ですよお客さん!

経理:私はあれをジャパネット銀行としか読めないんです(笑)。最初はぶっきらぼうな奴と思っていましたが、最近は頼りにしています。

社長:私は今、バイっていう字が倍という字体だということに、今とても違和感を感じています。本当にこれで正しいのでしょうか?あと、英語の by との関係が気になります。

開発:そうこうするうちに西暦2020年6月もあと30分で終わりですね。

経理:7月10日までにあれを提出しないと、懲役6ヶ月もしくは罰金50万円だそうです。

社長:ちょっと小腹もすきました。今日は目先を変えて緑のたぬき、これに生卵をトッピングで。

基盤:私はあの加薬だけ、特にフリーズドライのネギ。あと、レトルトのもやしを単独で売ってたら、買いますね。で、結果です。

開発:あー、1GB書くのに1分超って、15MB/秒程度ってとこですね。あん、びりーばぼー!

社長:いずれにしてももう、我々はもう出Azureの旅に出たのです。

* * *

経理:もうお湯をそそいで6分くらい経ったような。

社長:いや、歳をとるとやわいのが好きになるんですよね。やらかいですかー、ダァ!ずずっ。あれ?

基盤:粉末スープ入ってないですね。いや、粉末の液体って変だなと思いますが。

社長:あーこれこれ。一瞬、最近味がしなくなるというアレかと思いましたよ。ズズッ。

開発:これ、となりのそば屋より美味しいですよね。ずずっ。

社長:いや、何事においてもレギュラーとインスタントは別のジャンルですからね。比較は難しいです。ズズッ。

経理:生卵を落としたからにはスープまで完食しないと。ずずっ。

基盤:この天ぷらもどきをガリガリ感で食したいという意味がわからないですね。天かすは出し汁吸ってふにょふにょに限ります。ズズッ。

開発:そういえば昔、1杯のかけそばといショートストーリーが流行りました。当時は興味なかったんで読まなかったのですが。しばらく前のあの騒ぎの時に、ネタかも知れませんが、LCCでやってきてそば屋か何かで分け合って食べてるという話を読んで、あれを思い出しました。ホロッと来てしましましたね、ズズ。

基盤:お笑いのよしもとが不祥事で謹慎状態の中、巧まざるお笑い提供。で私はあの騒ぎで、自分のお気に入りのボールペンがジェットストリームというちょっと恥ずかしい名前のものだったって知ったんです。ズッ。

社長:ズー。スープまで完食いたしました。

基盤:日本人的にはインスタント味噌汁が理想かなと思います。具だくさんでケンチン的で150円くらいな。里芋と油揚げとこんにゃくとネギ、フリーズドライ+レトルト的にとてもマッチした組み合わせのように思います。

開発:それって要するに豚汁?

* * *

開発:それで本日の当社の結論としましては、コスパ的にAzureはもう無い、アマゾンライトセールならどれでも良い。RedHat系Amazon Linuxも面白いかも知れない。そういうことですね。

社長:そうですね。

— 2020-0630 SatoxITS

固まるSSLプロセス

基盤:どうも以前から、HTTPSのリバースプロキシのサーバプロセスが固まって溜まってしまう現象があります。時々手動で掃除しているのですが。

開発:何でしょうね?コネクションにSSLをかぶせてるプロセスだと思いますが。

基盤:ps xlf するとこんな感じ。

基盤:現在のプロセス番号は5000番台なので、それより大きいPIDのは一巡以上前のやつです。

開発:WCHANがfutexシステムコールということなので、何かの排他制御で固まってるようですね。ていうかLinuxってプロセス番号15ビットなわけ?

基盤:まあそれはカーネルのコンフィグ次第じゃないですかね。先日までdelegate.orgだったAzureのUbuntu18でのDeleGateのログを見ると130000を超えたあたりまで行ってます。130000 == 0x1FBD0 ですから、おそらく17ビット使ってると思います。

社長:私はfutexというようなシステムコールは知らないし、呼んだ覚えは無いのですが。

開発:ライブラリ関数から呼んでるんでしょうね。gdbで覗いてみましょうか。

基盤:gdb … 無いですね。sudo apt install gdb。OK。

開発:で、sudo gdb dg9.9.13+ -p 32232。OK。そして bt。

社長:bt 超ナツカシス。

開発: SSLフィルターのスレッドの終了待ちのようですね。ログは?

社長:固まってるプロセスに共通点は?アクセス先とか。

基盤:実行ファイルとかPDFです。大きめのバイナリですかね。

開発:いずれも disconnected はしてるから、クライアント側とは切断していて、一方リバースプロキシ先のサーバとのSSLの切断を待ってるという状態ですね。

社長:SSLかTLSのプロトコルが変わったとかかな?10年前には見なかった現象ですが。というか、ヘビーにHTTPSのリバースプロキシはやったことがなかったかも知れませんが。

開発:それって再現性ありますかね?同じアクセスで固まらない場合があるかという。

基盤:同じのにアクセスしてみます。再現しないですね。固まらない。

開発:しかしこれ、クライアント側が切断されるまでやたら時間がかかりましたね。

基盤:データ転送自体は0.5秒くらいで終わってますが、SSLが切断されるまでに10秒とかかかってるような?

開発:なんか、スレッドidがおかしなことになってますね。32ビットと64ビットの違いとか?

社長:これって単にサーバとKeep-Aliveしてるって話のような?それならHTTP的にタイム・アウトして切れるまでSSLも切れない。まずはそれを止めてみましょう。

基盤:どうやるんでしょう?

社長:さあ。マニュアルを読んで下さい。

基盤:Manual.shtmlで keep を探す… これですかね?

基盤:それでは HTTPCONF=bugs:no-keepalive を足して再起動。おや、ゾンビがポートを離さないのでリスタートできない。しかたが無い、親なしになった子プロセスをkill -9 で成仏させて、再起動。これ、再起動時にSIGTERMじゃなくてSIGKILLで終了させるってオプション無いんでしょうか?

社長:SIGTERMを聞いてくれなかったらSIGINTかSIGKILLするというオプションは作ったように思います。

基盤:とりあえず再起動できたので。ロード。おやログがスッキリしました。

開発:でもあいかわらずスレッド終了待ちがタイムアウトとかしてるのは気持ちわるいですね。

基盤:それより何より、バイナリがブラウザに表示されてしまうというコレ。

開発:Content-Type: application/octet-stream じゃいかんのですかね?

基盤:いえ、リバース先の nginx はContent-Typeを付けてくれてないようです。

開発:ああ、それで DeleGate が Guessed って出してたのか。これ、デフォルトのContent-Type て付けられるんでしたっけ?

社長:さあ。マニュアルには何と?

基盤:content-type で検索… 文字コード変換の場合と、CFIの場合にしか出てこないですね。

社長:まあ、CFIを噛ませれば良いって話ではありますが… まあ、ちょっと重くはなるでしょうね。

開発:ソースを見てみますか。grep Guessed src/*.c。ああ、http.cですね。どれ…

開発:これって、推定した結果を反映させる気満々だったようですが。

社長:ちょっと、クライアントに返しているヘッダをログに出してもらえますか?

基盤:こういう様子です。Content-Type 返してませんね。小さなCOPYRIGHTファイルにアクセスしてコレですから、サイズとかバイナリがとかでは無く、単にオリジンサーバが返してなかったらそうなるということのようです。

社長:ぐう。あー、お腹がすきましたね。飲みに行きましょうか。

開発:いや、ここは逃げずにもうひと踏ん張り。

基盤:バイナリのタイムスタンプからしてソースはこれかな。一応コピーしてと… しまった!自分自身にtar cf | xf してファイルが壊れました。

開発:まあ、隣のサーバにコピーがありますし。

基盤:あ、いや。一応tarしてアーカイブしてありました。

開発:で http.c を見る。Guess した Content-Type は何に使われているのか… ああ、内部的な判定に使われてるだけで出力されてないですね。じゃこれをクライアントに向けて出しちゃうと…

開発:めでたし。

基盤:ブラウザもちゃんと認識してくれますね。

社長:めでたし。お昼に行きましょう。

* * *

社長:あー食った飲んだで1,500円。予は満足じゃ。

開発:さたぽんのおばちゃん、店がすいてる時にビール頼むと一品サービスしてくれますね。あれはふつうの飲み屋なら、400円くらいの価値はあります。

社長:いやそれで、途中で出ていった中年男性が「また来ます」って言ったら見送りに出たおばちゃんが「あい、またきます」って返事してて、幼児の言語学習過程を見るようでした。

開発:あの男性はおばちゃんを女性として認識している感じがしましたね。

基盤:おばちゃんは実は女性だった!

社長:一般的にはそうでしょう。

開発:バグズ・ライフのてんとう虫が子供におばちゃんて呼ばれてましたね(笑)

経理:昨日のカードの使用履歴を見ますと、アマゾンVM20台一ヶ月分が一瞬で消費されてますが。

社長:いや昨日は久しぶりにボウリングの試合に出ましてね。ヒゲがちょっとウケましたw。コロナで試合が無くなってから2ヶ月?何も運動してなかったもんで、火星人みたいな状態なわけですよ。それで15ポンドの鉛のように重いボールを持ったり投げたりするのって、最初は恐怖感がありましたね。スピードが16km/h出なかったりとか。だけど本番になったら出端から裏ターキーだったり。まさにビギナーズラックw。ていうかあのまま変えずに投げてたらスコア的には良かったのかも知れないけど、恥ずかしいから表に入れたくなってしまうわけです。すごく凸凹したけどこんな状態で200も出るもんだなと関心しました。チームも好調で、全体の2位で今季を終えました。だけど3ゲーム目にもう体力というか握力の限界みたいになってしまい。今日もまだ手首あたりにだるさが残っています。昔は30ゲームくらい平気で投げたものですが…

社長:まあそれで無事に試合を乗り切ったごほうびに、ボウリング場の向かいの台湾料理の店で祝杯を挙げたわけです。あの店では致死量まで飲み食いしても5,000円を超える心配はありません。でそこから代行なんですが「7kmで2,500円です」て告げられた時。以前はなんとも思わなかったのですが、アマゾンVM5台ぶんかぁと思ったら、ずっしりと来ましたね。

基盤:まあそれを言えばタバコひと箱でVM1ヶ月動くわけですからね。

開発:基本、気晴らしに一番お金がかかると。

社長:それでかえりがけにゥエルシァでタバコなんかを買ったのですが、支払いは非接触でできますとカードのメールにあったので、試したんですが、ダメでした。たぶんコンビニでの話なのかな。

経理:そうするともうナナコも不要になりますね。

開発:さらばななこ、そしておにぎり銀行。

社長:それで4月からずっと不愉快なのですが、レジ袋は有料になりますがどれになさいますか?と聞かれるわけです。買った分がちょうど入る袋に決まってるし、どのサイズが適切なのか、そっちで判断してくれよと思うわけです。で「ちょうど良いサイズのをw」って答えるんですが、それもるもう飽きたというかうんざりです。

社長:ああそれで、カップ麺の棚を眺めたところ、100円以下、150円前後、200円超という3クラスがあることに気づきました。凄麺は200円、カップラーメンが150円、辛ラーメンとかが100円、そういう棲み分けのようです。

開発:そういえばトイレのLED電球が海王星状態になってしましました。

開発:ボイジャーになった気分です。

社長:それ、買ってくるの忘れました。お出かけ前にポチポチっとして袋に入れといてくれたら良いのに。まああそこがそういう気の利いたサービスできるとは思えないですが。

基盤:というか、都会ならアマゾンで宅配してくれるのでは。

開発:いや、それをやったら足腰退化してまじ火星人になっちゃうでしょう。

* * *

— 2020-0630 SatoxITS