PHPおよびPythonアプリでMemcachedサーバーを使用して、データベースのパフォーマンスを最適化します
データベースの負荷が高く、Webアプリの速度が低下するという苦痛を感じ、「DBクエリによって引き起こされる遅延を減らす方法はありますか?」と疑問に思ったことがある場合、その質問に対する答えは大いにあります。 Memcachedのフレンドリーなネイバーフッドメモリキャッシュデーモンは、すべての問題を解決するためにここにあります! DBのキャッシュは、DBの負荷を軽減し、動的Webアプリケーションを高速化するための最も簡単な方法の1つです。
Memcachedは、それ自体を高性能の分散メモリオブジェクトキャッシングシステムとして定義します。これは本質的に一般的なものですが、元々はデータベースの負荷を軽減することで動的なWebアプリケーションを高速化するために使用することを目的としています。 2003年に彼のウェブサイトLiveJournalのためにBradFitzpatrickによって開発されました。
この記事では、Ubuntu 20.04にMemcachedをインストールして構成する方法と、その言語固有のクライアントについて説明します。
前提条件
管理者権限を持つユーザーがいるUbuntu20.04でインストールされたシステム、つまり sudo
ユーザー。
インストール
Memcachedは公式のUbuntu20.04リポジトリで利用できます。また、Memcachedに加えて、次のようなCLIツールもインストールします。 libmemcached-ツール
Memcachedを管理します。次のコマンドを実行して、両方をインストールします
sudo apt install memcachedlibmemcached-tools
インストールの確認
インストールが完了すると、Memcachedデーモンがバックグラウンドで自動的に起動します。インストールを確認するために、次のコマンドを使用できます。 libmemcached-ツール
Memcachedサーバーの統計を取得するパッケージ。どちらかを実行します
memcstat --servers localhost
また
memcstat --servers 127.0.0.1
The memcstat
コマンドは、実行中のサーバーの統計を表示します。上記のコマンドを実行すると、以下に出力が表示されます。
などのさまざまな統計 稼働時間
すぐに、 バージョン
と pid
出力として表示されます。ただし、出力が表示されない場合は、Memcachedが実行されていない可能性があります。したがって、Memcachedサーバーを起動するには、次のコマンドを実行する必要があります。
sudo systemctl start memcached
システムの起動時にMemcachedサーバーを実行するには、次のコマンドを使用します。
sudo systemctl enable memcached
Memcachedの構成
memcachedがWebサイトサーバー自体にインストールされている場合、memcachedはローカルホストで動作するように事前構成されているため、構成ファイルを変更する必要はありません。
一方、別のシステムにMemcachedをインストールした場合は、リモートサーバーがMemcachedサーバーにアクセスできるように構成を変更する必要があります。
Memcachedサーバーのリモートアクセスの設定
Memcachedは、DDoS(分散型サービス拒否)攻撃に対して脆弱です。ファイアウォールルールが正しくなく、UDPポートが開いていると、サーバーが開いたままになり、DDoS攻撃に対して脆弱になります。
リスクを軽減するために、構成でMemcachedのUDPプロトコルを無効にするか、信頼できるサーバーのみを許可するようにファイアウォールを設定することができます。
箱から出して、UbuntuはTCPまたはUDPポートが開いていない状態で出荷されます。さらに、ファイアウォールデーモン ufw
(複雑でないファイアウォール)はデフォルトでは有効になっていません。
DDoSの脆弱性を軽減できるように、ファイアウォールを有効にしてMemcached構成をセットアップします。
まず、有効にします ufw
次のコマンドを実行します。
sudo systemctl enable ufw
次に、を開始します ufw
以下のコマンドを実行してサービスを実行します。
sudo systemctl start ufw
ファイアウォールが実行されているので、最終的にファイアウォールルールを設定できます。まず、ポート22を有効にしてSSH接続を許可します。目的のサーバーにリモートアクセスするには、SSHが必要です。
sudo ufw allow 22
次に、クライアントのIPアドレス(Webアプリケーションホスト)とサーバーのIPアドレス(Memcachedサーバー)を知る必要があります。
この例では、クライアントIPを次のように想定します。 192.168.0.4
およびMemcachedサーバーのIP 192.168.0.5
ローカルネットワーク上。
したがって、memcachedサーバーからクライアントサーバーへのリモートアクセスを許可するには、次のコマンドを実行します。
sudo ufwは、192.168.0.4から任意のポート11211までを許可します
交換してください 192.168.0.4
希望するクライアントIPアドレスを使用します。
次に、次の場所にあるMemcached構成ファイルを編集します。 /etc/memcached.conf
実行することによって ナノ
指図。
sudo nano /etc/memcached.conf
The memcached.conf
構成ファイルがnanoエディターで開きます。 -l 127.0.0.1
構成の行と置換 127.0.0.1
MemcachedサーバーIPを使用するか、この場合は 192.168.0.5
.
プレス交換後 ctrl + o
構成ファイルに書き込んでEnterキーを押すには、を押します。 ctrl + x
nanoを終了します。
Memcachedサーバーを再起動して ufw
以下のコマンドを実行してファイアウォールを作成します。
sudo systemctl restart memcached ufw
これで、Ubuntu20.04でのMemcachedサーバーのインストールと構成が完了しました。
Memcachedサーバーへの接続
Memcachedサーバーを使用するには、言語固有のクライアントをインストールする必要があります。幸い、Memcachedは多くの一般的な言語をサポートしています。
したがって、インストール方法を見てみましょう php
と Python
Memcachedのクライアント。
PHPは最も人気のあるサーバー側スクリプト言語であり、Memcachedは主に、PHPを利用したWebアプリのサーバーパフォーマンスを向上させるためにWeb開発者によって使用されます。
PHPにmemcachedサポートをインストールするには、 走る:
sudo apt install php-memcached
Pythonにも、Memcachedサーバーと連携して動作できるライブラリがいくつかあります。 pymemcached
また python-memcached
.
次のpipコマンドを実行して、Python用のmemcachedをインストールできます。
pipインストールpymemcache
pip install python-memcached
結論として、Ubuntu 20.04でのMemcachedのインストール、構成、およびいくつかの言語固有のクライアントについて見てきました。
Memcachedのより本質的で高度な使用法については、MemcachedWikiをご覧ください。