ウチの中の幾つかのデバイスで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年間ずっとスピードテストを行う状態にするようなことは可能でしょうか?
ソースコードはあるわけですから、可能かもしれません。
どのような目的で、そのテストは行われるのでしょうか。