SIBYL System

CでHTTPサーバを作る

社内ISUCONに参加してから、HTTPなWebサーバを1から作ってみたいなと思ったので、試してみました。

環境構築

install gcc

サンプルコードの作成

実行

実行できました。ビルド環境が構築できてますね。

このままでは開発がしんどかったので、EclipseとCDTを入れました。

以下、サイトのサンプルを見て実装、Chromeでアクセスした時にLengthの値が一致していないとエラーになったので、Contents-Lengthの値だけ修正しました。

Chromeでアクセスすると応答が返ってきました。

次に、Apacheの静的コンテンツと自作HTTPサーバのどちらが応答速度が早いかを競って見ます。

 

実行環境

環境はAWSのEC2でt2.nanoインスタンスを立ち上げました。インスタンスにはApacheを入れて、HELLO文字列を返すだけの静的コンテンツを用意します。

Apacheの応答を確認して、自作HTTPサーバの応答もまったく同じ状態にします。

 

速度比較

10回ほど試行してみました。

Apache(単位はミリ秒)

自作(単位はミリ秒)

自作が早いとはいえ、ほとんど誤差の範囲ですね。もう少し大きいファイルや簡単な動的スクリプトを使っての比較も今後試して見ます。次の社内ISUCONで使えるレベルまで持って行きたい。。

 

参考

Linuxネットワークプログラミングhttp://www.geekpage.jp/programming/linux-network/

 

モバイルバージョンを終了