【ownCloud】自宅クラウドストレージのパフォーマンスチューニング

Linux

ownCloud のパフォーマンスをチューニングする

以前、紹介した記事で、自宅のパソコンに ownCloud を利用したクラウドストレージの構築手順を解説いたしました。

その記事では、パフォーマンスに触れることができませんでしたので、今回は ownCloud のパフォーマンスチューニング方法を解説したいと思います。

なお、上記の記事で利用した OS は Raspberry Pi Desktop(Debian Buster) でしたが、訳あって、同じ Debian 系の Ubuntu にクラウドストレージを再構築しています。


スポンサーリンク

スポンサーリンク

スポンサーリンク

チューニングメニュー

以下が、ownCloud のチューニングメニューです。

チューニングメニュー
  1. ジョブの変更
  2. トランザクション分離レベルの変更
  3. キャッシュの利用
  4. セッション管理の変更
  5. ownCloud の設定変更




Cron ジョブの変更

「ownCloud Documentation」の「Background Jobs」を見ると、「デフォルトの方法は Ajax ですが、推奨される方法は Cron を使用すること」と説明されています。
よって、Ajax から Cron に変更いたします。




トランザクション分離レベルの変更

「ownCloud Documentation」の「Database Configuration on Linux」を見ると、以下のように説明されています。

「ownCloud のトランザクション分離レベルは TRANSACTION_READ_COMMITTED を使用しています。」
「一部のデータベースの構成で他のトランザクション分離レベルが適用されることがある。」
「その場合は、トランザクション分離レベルを変更する必要がある。」

MariaDB のデフォルトのトランザクション分離レベルは REPEATABLE-READ ですので、READ-COMMITED に変更します。



キャッシュの利用

キャッシュの利用に関しては、OPcache と APCu を利用します。
これは、PHP アクセラレータと呼ばれる PHP を高速化するための拡張機能です。

PHP はプログラムをコンピュータが実行するたびに、毎回、1行ごとに機械語に解析するインタプリタ言語と呼ばれる言語です。キャッシュを使うと、1度解析したプログラム(バイトコード)をキャッシュし、機械語に解析する処理を省きアプリケーションを高速化します。
また、プログラムを実行するためにはデータが必要になりますが、PHP にはデータをキャッシュする機能がありません。これについても拡張機能をインストールすることでキャッシュが可能になります。

ちなみに、OPcache はコードキャッシュ機能で、APCu はデータキャッシュ機能となります。




セッション管理の変更

セッション管理に関しては、redis を利用します。

1台の Web サーバーで運用している場合、それほど恩恵を受けることはないかもしれませんが、セッション情報をファイルに蓄積するよりもメモリに蓄積した方がアクセスが早いのでセッション管理方法も変更します。



ownCloud の設定変更

ownCloud の設定ファイルを変更し、キャッシュ情報などを設定します。


チューニング

チューニングメニュー」に沿って、パフォーマンスチューニング手順を解説していきます。


Cron ジョブの変更

はじめに、Cron ジョブの変更です。


Ubuntu の cron から起動されるように、以下のコマンドを実行します。

sudo crontab -u www-data -e
画像クリックで拡大画像を表示します

なお、ジョブの実行ユーザーには、Apache の実行ユーザー「www-data」を指定します。




次に、スケジュールを追加するため、以下を入力します。

*/5 * * * * /usr/bin/php -f /var/www/html/owncloud/occ system:cron
画像クリックで拡大画像を表示します

5分毎に、ジョブが実行されます。




次に、バックグラウンドジョブを cron に設定するため、以下のコマンドを実行します。

sudo -u www-data /var/www/html/owncloud/occ background:cron
画像クリックで拡大画像を表示します



crontab

crontab(クロンタブ、あるいはクローンタブ、クーロンタブとも)コマンドはUnix系オペレーティングシステム (OS) において、コマンドの定時実行のスケジュール管理を行うために用いられるコマンドである。標準入力からコマンド列を読み取り、crontabと呼ばれるファイルにそれを記録する。この記録を元に定時になると、その命令内容を読み取り、実行が行われる。cronという名称はギリシア語のクロノス (χρόνος) に由来するという説がある(Command Run ON の略という説も)。日本語ではクーロンという読みが慣習的に広く用いられているが、英語では通常クロンまたはクローンと発音する。

フリー百科事典ウィキペディアより引用




トランザクション分離レベルの変更

続いて、トランザクション分離レベルの変更です。


MariaDB の設定ファイルを開くため、以下のコマンドを実行します。

sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
画像クリックで拡大画像を表示します




次に、トランザクション分離レベルを変更します。

画像クリックで拡大画像を表示します

[transaction-isolation] を [READ-COMMITTED] に変更します。




次に、MariaDB を再起動するため、以下のコマンドを実行します。

sudo systemctl restart mysql
画像クリックで拡大画像を表示します




キャッシュの利用

続いて、キャッシュを利用するための設定を追加します。


OPcache と APCu をインストールするため、以下のコマンドを実行します。

sudo apt install php7.4-opcache php7.4-apcu
画像クリックで拡大画像を表示します




次に、OPcache と APCu の設定を追加するため、以下のコマンドを実行します。

sudo vi /etc/php/7.4/apache2/php.ini
画像クリックで拡大画像を表示します




次に、OPcache の設定を変更します。

画像クリックで拡大画像を表示します

OPcache 用の設定項目は、既存の状態で存在しますので、コメントの解除や設定を変更します。


以下は、OPcache の設定例です。

opcache.enable=1
opcache.enable_cli=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=3000
opcache.revalidate_freq=600




次に、APCu の設定を追加します。

画像クリックで拡大画像を表示します

APCu 用の設定項目は、一番下に追加します。


以下は、apc の設定例です。

apc.enabled = 1
apc.enable_cli = 1
apc.shm_size = 64M
apc.ttl=7200




以下は、phpinfo から設定を確認したイメージです。
どちらも、設定が反映されていることがわかります。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




セッション管理の変更

続いて、セッション管理を変更します。


PHP から redis を呼び出すためのパッケージをインストールするため、以下のコマンドを実行します。また、php.ini にセッションで redis を使う設定を追加します。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、php.ini の設定例です。

max_execution_time = 60
memory_limit = 512M
session.save_handler = redis
session.save_path = “tcp://localhost:6379”



次に、redis の安定版をダウンロードするため、以下のコマンドを実行します。

wget http://download.redis.io/releases/redis-stable.tar.gz
画像クリックで拡大画像を表示します

なお、公式サイトでは、ベータ版ではありますが Ubuntu の場合、redis のパッケージリポジトリからインストールすることもできると説明されています。

ベータ版ですので、今回は、make します。




次に、ダウンロードした圧縮ファイルを解凍するため、以下のコマンドを実行します。

tar xf redis-stable.tar.gz
画像クリックで拡大画像を表示します




次に、解凍したディレクトリに移動し、redis を make するため、以下のコマンドを実行します。

sudo make
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


make が無いとエラーになります。その場合は、make をインストールしてください。また、gcc が無いと make が失敗する場合があります。その場合は gcc をインストールしてください。




次に、redis をインストールするため、以下のコマンドを実行します。

sudo make install
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




次に、redis 用のユーザーを作成するため、以下のコマンドを実行します。

sudo adduser --system --group --no-create-home redis
画像クリックで拡大画像を表示します




次に、redis で使用するディレクトリの作成と権限を付与します。

sudo mkdir /etc/redis
sudo mkdir /var/log/redis
sudo mkdir /var/lib/redis
sudo chown redis:redis /etc/redis
sudo chown redis:redis /var/log/redis
sudo chown redis:redis /var/lib/redis
sudo chmod 770 /var/lib/redis
画像クリックで拡大画像を表示します



次に、redis.conf をコピーし、そのファイルに設定を追加します。

sudo cp redis.conf /etc/redis
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、redis.conf の設定例です。なお、[save] はすべてコメントにしています。

dir /var/lib/redis/
logfile /var/log/redis/redis.log




次に、redis 自動起動用の設定ファイルを作成します。

sudo vi /etc/systemd/system/redis.service
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、redis.service の設定例です。

[Unit]
Description=Redis

[Service]
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/local/bin/redis-cli shutdown
Restart=always
User=redis
Group=redis

[Install]
WantedBy=multi-user.target




次に、redis を開始します。また、redis のステータスを確認します。

sudo systemctl enable redis
sudo systemctl daemon-reload
sudo systemctl start redis
sudo systemctl status redis
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します




ownCloud の設定変更

続いて、ownCloud の設定を変更します。


ownCloud の設定ファイルを変更するため、以下のコマンドを実行します。

sudo vi /var/www/html/owncloud/config/config.php
画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


以下は、ownCloud への設定追加例です。
config.php の一番下、” ); ” の前に追加しています。

‘default_phone_region’ => ‘JP’,
‘memcache.distributed’ => ‘\OC\Memcache\Redis’,
‘memcache.locking’ => ‘\OC\Memcache\Redis’,
‘memcache.local’ => ‘\OC\Memcache\APCu’,
‘redis’ =>
array (
‘host’ => ‘localhost’,
‘port’ => 6379,
),
‘htaccess.RewriteBase’ => ‘/’,




変更内容を反映するため、以下のコマンドを実行します。

sudo systemctl restart apache2
画像クリックで拡大画像を表示します




まとめ

以上が、ownCloud のパフォーマンスチューニングとなります。

いかがでしたでしょうか?

色々なサイトの情報を参考にしながらパフォーマンスチューニングを施してみましたが、実際は、身近の人のみが利用するために構築したクラウドストレージなので、そこまでパフォーマンスにこだわる必要はなかったかと思います。

ですが、パフォーマンスチューニングができるとわかればやってみたいと思いますよねー

身近の人にパフォーマンスが遅いって言われるのも嫌だし。

まー、不慣れな筆者でも、なんとかパフォーマンスチューニングが施せましたので、もし、自宅にクラウドストレージを構築した場合、パフォーマンスチューニングにもチャレンジしてみてはいかがでしょうか。

ちなみに、redis も元気に動いております。

redis を停止した状態では、Internal Server Error になります。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します



redis を開始した状態では、クラウドストレージが利用できるようになります。

画像クリックで拡大画像を表示します
画像クリックで拡大画像を表示します


次は、ownCloud のセキュリティ対策方法を解説したいと思います。





本稿をご覧になっていただいている読者様の中で、もし、インフラエンジニアを目指している方、もしくはインフラエンジニアに興味がある方がいらっしゃれば、スクールで学ぶことも「あり 」です。
いくつかインフラ系の技術が学べるスクールをピックアップいたしましたので、ご検討の一助となれば幸いです。

 スクール  受講料  受講期間  ポイント
ササエル 19,800円 14レッスン 初級のインフラエンジニアに特化したオンラインスクールです。インフラエンジニアを目指すなら、まずはここから!?
98,000円 15レッスン 初級の次は中級も学べます。
TechAcademy [テックアカデミー] 174,900円(※1) 4週間プラン コースにより、若干、インフラ要素あり。また、学べる言語が細分化されているので、目的に合ったコースが選べます。
【CCNAコース ウズウズカレッジ】 33,000円/月 1ヶ月~ 応募資格を満たしていれば、無料特待プランで受講料が無料!?
初心者OK!KENスクール 187,000円(※2) 50時間 ネットワークコースのLinuxレベル1取得講座。Webサーバーの構築まで学べます。
119,900円(※2) 30時間 ネットワークコースのWindows Server構築講座。クライアントOSの管理操作を学べます。
※1.フロントエンドコースの料金です。学生の場合、料金は163,900円と割引があります。
※2.スクール提携企業特別割引の場合、受講料が10~15% OFF、入会金無料。学生割引特典の場合、全講座料金 20% OFF。




最後までお読みいただきありがとうございました。




では。




スポンサーリンク

スポンサーリンク

Linux
スポンサーリンク
たまおをフォローする
スポンサーリンク
たまーのテクノロジー
タイトルとURLをコピーしました