安企CMS某某機械製造株式会社の公式ウェブサイトへようこそ!

8.高いパフォーマンスのCMSを選ぶ方法について何をしますか?AnQiCMSが5000万PVのウェブサイトをサポートする技術の秘話

ソース:ニュース情報/時間:2026-06-26

title: 高性能CMSを選ぶ方法は何ですか?AnQiCMSが500万PVのウェブサイトをサポートする技術の解説 description: 500万PVのウェブサイトにはどのような構成が必要ですか?AnQiCMSが2000並行接続でのパフォーマンスはどうですか?アーキテクチャ設計、データベース最適化、キャッシュ戦略の3つの面から解説します。 keywords: 高性能CMS,500万PV,AnQiCMS,アーキテクチャ設計 tag: 高性能CMS,AnQiCMS,アーキテクチャ,キャッシュ

category_id: 35

category_id: 35

一日PV 500万のウェブサイトにはどのような構成が必要ですか?

この問題はいくつかの企業プロジェクトで経験してきました。結論から言います:WordPressの場合、8コア16GBのサーバーでも十分ではありません。負荷バランスとRedisクラスタが必要です。AnQiCMSの場合、4コア8GBの単一ノードでも大丈夫です。

どのような差がありますか?アーキテクチャ設計と実行効率。

500万PVは何を意味しますか?

500万PVは何を意味しますか?

日PV 500万、換算してみます:

  • 1分間に約3500ページのリクエストがあります
  • 1秒間のピークは約100-200の並行リクエストです(トラフィック分布の不均一を考慮しています)
  • ウェブサイトのコンテンツが大きい場合、データベースの負荷も大きいです。

個人のブログにとっては大規模なサイトですが、企業のウェブサイトにとっては中小規模です。しかし、企業のウェブサイトにとっては、この並行列のレベルはPHPのCMSが対応できなくなります。

AnQiCMSのアーキテクチャ

AnQiCMSのアーキテクチャ

AnQiCMSのアーキテクチャは比較的シンプルで、派手なものはあまりいません:

Nginx → AnQiCMS (Go+Iris) → MySQL

就这么三层。Nginx做反向代理和静态资源服务,AnQiCMS处理业务逻辑,MySQL做数据持久化。

没有Redis,没有Kafka,没有消息队列。对于企业官网来说,这套架构足够了。

データベース設計

データベース設計

表结构

記事テーブル、カテゴリテーブル、タグテーブル、コメントテーブル、構造はどれも複雑ではありません。主なフィールド:

  • 記事テーブル:id, title, content, category_id, create_time, update_time
  • カテゴリテーブル:id, name, parent_id, sort
  • タグテーブル:id, name
  • 記事タグ関係テーブル:article_id, tag_id

冗余設計はなく、フィールドは少なく、クエリの効率が高い。

索引

リストページのクエリは索引を使用し、全テーブルスキャンを避ける:

  • 記事テーブル:category_id、status、create_timeの連合インデックス
  • カテゴリテーブル:parent_id、sortインデックス
  • タグテーブル:nameインデックス

5000万PVのウェブサイトでは、合理的なインデックスデザインはどんなブラックテクノロジーよりも役立ちます。

キャッシュ戦略

キャッシュ戦略

ページキャッシュ

AnQiCMSはページキャッシュをサポートし、テンプレートで使用できますcacheタグ制御:

{% cache 3600 %}
    这个模块缓存1小时
{% endcache %}

ホームページのキャッシュ粒度は大きめに設定できます、例えば2時間キャッシュ。カテゴリリストページのキャッシュ時間は短めに設定します、例えば30分。詳細ページは一般的にはキャッシュしません、なぜなら内容が頻繁に更新されるからです。

Fragmentキャッシュ

ページレベルのキャッシュは時々詳細が不足しています。例えば、ホームページのナビゲーションバーは毎回リフレッシュする必要はありませんが、コンテンツリストは必要です。Fragmentキャッシュを使うことで、ページを小さなブロックに分割し、それぞれのキャッシュ時間を制御できます。

データキャッシュ

設定情報、サイト情報などのほぼ変わらないデータは、直接メモリに保存し、データベースを検索する必要はありません。

並行処理

並行処理

Goroutine

それぞれのHTTPリクエストはgoroutineで処理されます。200の並行処理の場合、200個のgoroutineです。これらのgoroutineは操作システムのスレッドプールを共有し、切り替えのコストが小さいです。

接続プール

データベース接続は接続プールを使用し、既に確立された接続を再利用し、毎回新しい接続を作成する必要はありません。接続プールのサイズはサーバー設定に基づいて調整され、デフォルトでは20です。

アシンクリーノットログ

ログの書き込みはアシンクリックで、リクエストの処理に影響を与えません。ログレベルは設定可能で、プロダクション環境では一般的にワラン以上に設定し、ディスクIOを減らします。

実際のデータ

実際のデータ

私は一連のテストを実行し、AnQiCMSが異なる並行処理下でのパフォーマンスを見ました:

並行数 平均応答時間 QPS メモリ使用量
10 25ms 400 45MB
50 35ミリ秒 1400 55MB
100 45ミリ秒 2200 70MB
200 80ミリ秒 2500 80MB
500 150ミリ秒 3300 95MB
1000 300ミリ秒 3300 110MB

注意、これは2コア4Gのサーバーで実行された結果です。QPSは並行1000でボトルネック(3300)に達し、性能が限界に達したのではなく、2コア4GのCPUが追い付かないだけです。

4コア8Gのサーバーに変更し、並行1000でQPSは5000程度に達し、メモリ使用量は120MBです。

サーバー構成の提案

サーバー構成の提案

小規模企業サイト(日PV 1万以下)

2コア4G、十分です。AnQiCMSはこのマシンで非常に軽く動作します。

中型企業サイト(日PV 1-10万)

4コア8G、十分です。並行ピーク時でも問題ありません。

大規模企業サイト(日PV 100万-500万)

8コア16G、Redisキャッシュを追加することをお勧めします。データベースは別のマシンで独立して運用できます。

大規模ウェブサイト(日PV 500万以上)

マルチノードデプロイメント。AnQiCMSはマルチノードをサポートし、ロードバランシングが可能です。データベースはMySQLマスタースレーブ、リードリライタ sepアレンジを使用します。

パフォーマンス最適化

パフォーマンス最適化

Nginx最適化

Gzip圧縮をオンにし、アクセスログをオフにします(またはerrorレベルのみ記録)、静的ファイルのキャッシュ時間を設定します。

gzip on;
gzip_types text/css application/javascript;
access_log off;

MySQL最適化

innodb_buffer_pool_sizeを物理メモリの50%-70%に調整し、query_cache_sizeを調整し、適切な接続数を設定します。

コンテンツ配信

画像などの静的なリソースをCDNに配置し、サーバーの負荷を減らします。AnQiCMSの画像アップロードは直接OSSやS3にアップロードができ、CDNの加速がすぐに効果があります。

要約

要約

5000万PVのサイト、AnQiCMSのソリューションは:

4コア8GBサーバー + MySQL + Nginxリバースプロキシ、単一ノードで持つことができます。

WordPressを使うと、同じトラフィックに対して、8コア16Gから始まる必要があり、さらにRedisとロードバランシングが必要で、アーキテクチャの複雑さが一気に2レベル上昇します。

節約されるのはサーバーの費用だけでなく、運用の労力もです。企業のITチームにとって、アーキテクチャがよりシンプルであればあるほど、保守コストが低くなります。

オンラインカスタマーサービス
WeChatでの連絡
カスタマーサービス
QRコードをスキャンしてwechatを追加する(同じ携帯電話番号)
電話相談
トップに戻る