Ubuntu

Wi-Fiが遅いの?宅内にスピードテストサーバーを立ててみる

ウチの中の幾つかのデバイスでWi-Fiの速度が出ない…その原因が本当はなんなのかを知りたかった。昨今、ネットワーク利用が増えているんだろうし、テスト用に使わせて頂いているサーバーも混雑しているかもしれない。



広告


ということで、宅内にスピードテストできる環境を構築しようと考えた(他のサービスを提供しているサーバーに同居)。

結果からすると、ウチのネットワーク環境は2世代?くらい古いけれど、その世代の性能は出ていて、普通に使っている分には問題なし!と言い切って良いと思える結果が出た。

サクッと教えてくれたのはこちらのサイト。
web net FORCE / 自分だけの専用プライベートスピードテスト(通信速度計測)サーバーを構築する

帯域制限もしたいのでその辺りも設定していく。

やること。

 

前提条件

これから設定しようとする環境は以下。

  • Ubuntu 18.04 LTS
  • Apache, PHP7.2が導入済み
  • 既に各種サービスが共存している

パッケージの動作環境はもっと幅広いが、今回はこの構成で。

事前準備

学習

紹介されていたのは LibreSpeed という軽量スピードテストシステム。これを扱うサイトでそれぞれ名前が違っているので、時々名前を変えているのかもしれない。
Github / librespeed / speedtest

動作環境はそこに書かれているが、Webサーバー(Apache2,nginx,IISとかとか)とPHP5.4以上が動く環境ならそれでよさそう。
結果を保存するならデーターベース(MySQL,PostgreSQL,SQLiteとかとか)を使うようだが、これはオプション。今回は触れない。

環境の確認

インストールする先は Ubuntu 18.04。状態を確認する。

$ apache2 -v
Server version: Apache/2.4.29 (Ubuntu)
Server built: 2020-03-13T12:26:16
$ php -v
PHP 7.2.24-0ubuntu0.18.04.4 (cli) (built: Apr 8 2020 15:45:57) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
with Zend OPcache v7.2.24-0ubuntu0.18.04.4, Copyright (c) 1999-2018, by Zend Technologi

LibreSpeedを実行できる環境は整っている。まだインストールされていない場合は、インストールする。多分こんな感じで良いのだろう。

$ sudo apt install apache2 php7.2

 

インストール

パッケージのダウンロードと基本設定

Ubuntuのパッケージには含まれていないようなので、GithubのLibreSpeedのところから落としてくる。
(サイトの「Clone or download」ボタンを押すと表示されるDownload ZIPのリンクをコピーして実行している)

これを展開して幾つかパッケージに変更を加える。

$ wget https://github.com/librespeed/speedtest/archive/master.zip
$ unzip master.zip
$ sudo chown -R root:root speedtest-master/
$ sudo mv speedtest-master/ /usr/share/LibreSpeed
$ sudo cp -a /usr/share/LibreSpeed/example-singleServer-full.html /usr/share/LibreSpeed/index.html

一式を /usr/share 配下に配置した。/var/www 配下でも問題はないと思う。他のパッケージがココに入るのでまねしてみているだけ。

multipleServerを使いたくなる気持ちがはあったけれど、今回のテストはあくまでも宅内でテストして十分なスピードが出るのかを確かめること。singleServerが簡単で確実な選択。

Apacheでサービス公開

Apacheにサービスを登録して、素の状態で動くところを確認する。サブドメインで登録するのが普通みたいだけれど、ウチの場合はサブディレクトリ形式でサービスを提供しているので、今回もその方向で設定。

/etc/apache2/sites-enabled/<現在有効な設定>.conf

<VirtualHost>
…
    # 適切な場所に追加
    Alias /speedtest /usr/share/LibreSpeed
    <Location /speedtest>
        Options FollowSymLinks
        AllowOverride All
        Request all granted
        <IfModule mod_php7.c>
            php_value max_execution_time 90
            php_value max_input_time 90
            php_value memory_limit 128M
            php_value post_max_size 50M
            php_value upload_max_filesize 50M
            php_value date.timezone Asia/Tokyo
        </IfModule>
    </Location>
…
</VirtualHost>

※PHPの設定はZabbixが作ってくれた設定ファイルを参考に作成。

KeepAlive Onが有効になっていることを確認する。

/etc/apache2/apache2.conf

…
#
# KeepAlive: Whether or not to allow persistent connections (more than
# one request per connection). Set to "Off" to deactivate.
#
KeepAlive On
…

設定を反映。

$ sudo systemctl reload apache2

 

アクセステスト

ここまでの設定でスピードテストが実行できるようになっているはずなので、アクセスしてみる。

https://hogeserver.hogeddns.jp/speedtest/

Startボタンをクリックすればスピードを計測できる。
ウチの場合は設備が二昔くらい前のものなので、有線LANでこんな感じ。

カスタマイズ

色々とカスタマイズしてみる。

帯域を制限する

短時間ではあるものの、テスト中はサーバーへのアクセスが非常に悪くなるはず。利用者が家族だけでなく親戚もいたりするわけで、帯域を使い切るようなことは避けたい。

具体的には最大70Mbpsくらいでいいかなって思う。

使用したモジュールはmod_bw。

$ sudo apt install libapache2-mod-bw

※これでモジュール有効化までされる模様。

以下で帯域を制限。

…
    <Location /speedtest>
        Options FollowSymLinks
        AllowOverride All
        Require all granted
        BandWidthModule On
        ForceBandWidthModule On
        BandWidth all 9175040

※9175040(byte/sec) = 70Mbps / 8 * 1024 * 1024

設定をリロードする。

$ sudo systemctl reload apache2
$ sudo systemctl restart apache2 ← だめならサービス再起動で

これで、ダウンロードを70Mbpsに制限できた。
mod_ratelimit や mod_qos を使ってみたけれど、設定値は1600KiBでだいたい70Mbpsだったりして、どうやって計算してあげれば良いのかが分からない。

その点、計算した数字がきちっと結果になるのが嬉しいmod_bw。

ただし、アップロードは制限できない。どういうわけか、試してみた全てがそうだった。Apacheに何か制限があるのか、アップロードは誰も気にしないのか、よく分からないけど諦めた。

タイトルを変える

こういうのは見た目も大事かなと。特に、ネットが遅い遅いと言っている娘とかを信用させるなら、それっぽい形を整えないと。

…
<title>LibreSpeed - hogeserver.hogeddns.jp</title>
</head>
<body>
<h1>LibreSpeed</h1>
<h2>言いたいことをココで書く</h2>

赤文字部分を編集したり追記したりして変化させる。

さいごに

これで試してみると、遅いと思っていたデバイスは確かにちょっとだけ遅いんだけど、スピードテストサイトで試したほど駄目じゃなかった。

  • 今まで駄目だと思っていたデバイスは決して駄目じゃなく、そこそこのスピードが出ていた。
  • 駄目だと思っていた場所(家の中だけど)は決して駄目じゃなく、アクセス先のサーバーやネットワークが忙しい時間帯にアクセスしてたっぽい。

だけど、ビデオ会議をしていたら音が途切れたりしたようだったから、何か問題があるのかもしれない。こうやって1つ1つ原因を潰していけば、いつかは本当の原因にたどり着けるだろう。

あと、今回初めてブロックエディタで記事を書いてみた。厳密にはブロックエディタは使っていたんだけれど、クラシック版の段落との併用だったので、純粋にブロックエディタで記事を書いたのは初めて。併用で慣れていたせいか、使い勝手は「良い」と感じた。

だけど…なんか動作が重い。編集している文面が長くなってくると、かなり遅い。文字を入力しているのに、画面に反映されるまでに時間がかかる。CPUはi5 750だけど、それにしても遅い、何もしていないときでもCPUを10%くらい、文字を入力すると20~50%を行き来している。

これはいくら何でも駄目なんじゃないかね。何か、問題があるのかもしれないので、調べてみるか…

広告

コメントはこちらから お気軽にどうぞ ~ 投稿に関するご意見・感想・他

  1. MNT より:

    コードを書き換えて、
    例えば1年間ずっとスピードテストを行う状態にするようなことは可能でしょうか?

  2. rohhie より:

    ソースコードはあるわけですから、可能かもしれません。
    どのような目的で、そのテストは行われるのでしょうか。