Poppen.de 是德國知名社交網站,擁有 200 萬註冊用戶、2 萬並發在線、每日 20 萬私信、25 萬登錄請求。團隊僅 11 開發、2 設計、2 運維,卻支撐起採用免費增值模式的複雜業務。其架構融合 Nginx、MySQL、CouchDB、Erlang、Memcached、RabbitMQ、PHP、Graphite、Red5、Tsung 等技術,極具參考價值。
所有服務基於 Nginx。前端 2 台 4 年壽命的單 CPU、3GB RAM 機器,高峰期承載 15 萬 RPM。3 台獨立圖片服務器為 *.bilder.poppen.de 提供 8 萬 RPM。關鍵設計:大量請求直接由 Memcached 服務,繞過 PHP。用戶資料頁緩存至 Memcached,每分鐘處理 8000 請求。圖片採用分佈式本地緩存:上傳至中央文件服務器,3 台 Nginx 按需回源緩存,減輕存儲壓力。
28 台雙 CPU、6GB 內存機器運行 PHP-FPM,每機 100 工作進程,啟用 APC 的 PHP 5.3.x,CPU/內存降低 30%+。代碼基於 Symfony 1.2,利用框架規範加速開發、降低新人門檻。性能分析用 Facebook 開源的 XHProf,易於定制、緩存高昂計算。
表設計避免關聯、大量緩存、破壞範式、建數據挖掘表。多用 MyISAM 快速查詢,面臨全表鎖問題,考慮遷移 XtraDB。
45GB+ 緩存、51 節點,緩存 Session、視圖、函數結果。有系統自動同步數據更新至緩存。未來考慮 Redis Hash API 或 MongoDB 改進緩存更新。
2009 年中引入,LVS 後跑 2 台。近期更多業務接入:日誌、郵件、通知、圖片上傳等,28 台 PHP 每日推 50 萬請求。關鍵技術:fastcgi_finish_request() 異步發送隊列,用戶無需等待腳本結束。高峰期每分鐘 1000 登錄請求,隊列機制可逆序執行寫入、水平擴展消費者,無需改配置。
單機運行,按模塊/行為/錯誤類型查詢分組,解決了逐台登錄 PHP 機器分析日誌的痛點。
採集請求、Memcached 命中率、RabbitMQ 狀態、系統負載等,平均 4800 次/分鐘更新。曾用於對比 Symfony 新舊版本性能,配合 XHProf 定位問題。
提供用戶上傳視頻與視頻聊天,2009 年中月流量 17TB。
Erlang 編寫的分佈式基準測試工具。錄製生產 MySQL 流量轉為 Tsung 會話,回放模擬真實並發,驗證實驗環境性能。