成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

如何用Redis提升Mastodon服務器的性能?

譯文
數據庫 Redis
安裝的默認Mastodon系統對于小型服務器來說很好,但需要一番工作才能使其具有可擴展性。本文介紹了您開始動手之前須了解的一些知識。

譯者 | 布加迪

審校 | 孫淑娟

迅速增加的用戶和活動已考驗了許多Mastodon服務器的可擴展性,也給廣大管理員帶來了壓力。據IT外媒TechCrunch采訪Mastodon創始人Eugen Rochko的文章介紹,在大批用戶離開Twitter之后,Mastodon在8600臺不同服務器上的月活躍用戶猛增到250萬。這些數字來自2022年12月,采用率在繼續提高。

這個增長勢頭有多快?對服務器又有什么影響?下圖顯示了一個大型實例在一段時間內的作業隊列,可以幫助您了解情況。上面那條線是所處理的作業數量,下面那條線是失敗的作業數量。

圖片

圖1. Twitter用戶外流對Mastodon作業隊列帶來的影響

Redis開源(Redis OSS)是Mastodon技術堆棧的一部分。任何想要實施Mastodon服務器或提高其性能的人都應該學習如何最有效地配置Redis元素及其他設置。我們在本文中總結了Mastodon的架構,解釋了Redis適合的地方,并指出了潛在的瓶頸。我們將幫助您開始調優自己的實例,并確定解決可擴展性問題所需要采取的操作。

1、Mastodon簡介

不妨先簡單介紹一下技術。

Mastodon自稱是“一種基于ActivityPub的免費開源社交網絡服務器,用戶可以關注好友、發現新朋友。用戶可以在Mastodon上發布想要發布的任何內容:鏈接、圖片、文本、視頻。所有Mastodon服務器都可以作為一個聯合網絡實現互操作,即一臺服務器上的用戶可以與另一臺服務器上的用戶無縫聯系,包括實現ActivityPub的非Mastodon軟件。”

ActivityPub是W3C推薦的一種去中心化社交網絡協議,基于Activity Streams 2.0數據格式,這種模型用于使用JSON表示潛在和已完成的活動。ActivityPub提供了用于創建、更新和刪除內容的客戶端到服務器API,以及用于傳遞通知和內容的聯合服務器到服務器API。

2、Mastodon和Fediverse

用ActivityPub、OStatus、Zot!和diaspora*等協議結合在一起的聯合服務器網絡稱為Fediverse。Fediverse上的服務器(名為“實例”)與其他實例聯合起來,這樣就獲得了如同集成社交網絡的用戶體驗。每個實例管理各自的操作和安全。

Mastodon是實現ActivityPub的20多種服務器之一。據Fediverse Observer聲稱,截至去年12月,Fediverse中共有21501臺服務器。

圖片

圖2. Fediverse

3、Mastodon架構

Mastodon是一種帶有React.js前端的Ruby on Rails(RoR)應用軟件。它遵循這些框架的標準實踐。若要運行Mastodon,您需要Ruby、Node.js、PostgreSQL、Redis和SMTP服務器。Sidekiq是RubyGems。添加另外幾項服務,比如NGINX和Cloudflare,就能提升Mastodon的可擴展性和抵御DDoS攻擊的能力。

下面的架構圖有點過于簡化了。PostgreSQL是存儲用戶和帖子等內容的數據庫。Sidekiq是Ruby和Rails的后臺作業系統。Redis是內存中數據庫,用于充當PostgreSQL(圖中省略)的緩存,并保存Sidekiq作業隊列(圖中附有)。文件存儲通常保存在Amazon S3存儲桶或同類存儲區中;由于多個原因,將外部文件存儲在本地磁盤上有問題,將它們存儲在NFS上更是一場早晚會降臨的災難。

圖片

圖3. Mastodon架構概況

4、Redis簡介

Redis是一種NoSQL內存中數據結構存儲系統,可以將數據持久地存儲在磁盤上。它可以充當數據庫、緩存和消息代理。Redis擁有內置復制、Lua腳本、最近最少使用(LRU)清除、事務和不同級別的磁盤持久性。它通過Redis Sentinel提供了高可用性,結合Redis Cluster提供了自動分區。

Redis數據模型是鍵值,但也支持多種類型的值:字符串、列表、集、有序集合、散列、流、HyperLogLogs和位圖。Redis還支持具有半徑查詢和流的地理空間索引。

Redis OSS功能強大,但除了增加云數據庫即服務外,Redis企業版還增加了提升速度、可靠性和靈活性的功能。Redis企業版可線性擴展,以支持每秒數億次操作,具有本地延遲的雙活全球分布,提供了Redis on Flash,以基于磁盤的數據庫的基礎設施成本支持大型數據集,并基于內置持久性和單位數秒級故障切換機制提供99.99%的正常運行時間。這一切都是在將數據庫延遲保持在1毫秒以下的情況下提供的。

5、如何安裝Mastodon?

只要您有root權限,可以在Debian 11或Ubuntu 20.04系統上從源端安裝Mastodon,也可以從云實例安裝。這個過程很漫長,但手動操作最終讓您對安裝的系統會有最大的控制和了解。

還可以從許多云提供商(包括DigitalOcean、Linode和AWS等)的應用軟件市場安裝Mastodon,可以在Docker或Kubernetes上安裝Mastodon,包括云提供商自己的Kubernetes,或者向Mastodon托管提供商(比如Masto.host、Fedi.monster或Cloudplane)租用實例。撰寫本文時,許多但并非所有的Mastdon托管提供商對新實例關閉,它們最終可能會再次開放。

許多人已經發帖子介紹安裝和運行自己的Mastodon實例方面的感悟和心得。只需搜索“我自己的Mastodon服務器”或“個人Mastodon實例”,就能找到許多這方面的內容。

6、Mastodon性能瓶頸及應對方法

Nora Tindall的敘述較為清晰。她的結論總結一下就是“默認的Mastodon的配置很糟糕。對于小服務器上的小實例來說沒有問題,但一旦您開始發展壯大,就必須擴展Mastodon的規模。”

瓶頸在哪里?據Tindall聲稱,最大的瓶頸是數據庫資源(需要為PostgreSQL分配一半的內存)、Sidekiq隊列(分開它們)以及數據庫連接(確保有足夠的連接來處理Web服務器、Sidekiq隊列和流:Nora建議總共200個數據庫連接)。

另一組實用的調優技巧來自Hazel Weakly:

  • 通過增加worker_rlimit_nofile和worker_connections的值,調優NGINX。
  • 增加PostgreSQL的max_connections,但別太離譜。考慮512作為上限。
  • 考慮pgbouncer之類的數據庫池。這讓您可以避免PostgreSQL讀副本。
  • Hazel引用了Nora針對DB_POOL、MAX_THREADS、WEB_CONCURRENCY和STREAMING_CLUSTER_NUM的建議。
  • 針對對象存儲,使用S3或類似的服務,而不是本地磁盤,尤其不是網絡文件系統(NFS)。
  • 針對默認(default)、推送(push)和拉取(pull)類型的Sidekiq隊列:將DB_POOL設置為10,并將-c設置為$DB_POOL的值。
  • 針對入站和調度器Sidekiq隊列:將DB_POOL設置為5,并將-c設置為$DB_POOL的值。
  • 針對mailer Sidekiq隊列:將DB_POOL設置為1,并將-c設置為$DB_POOL的值。
  • 入站隊列非常受CPU的限制,很少的線程占用整個CPU核心。準備好為入站隊列啟動多個進程。將DB_POOL設置為10。
  • 考慮將Puma(Mastodon Web服務器)和Sidekiq移動到它們各自的機器上;· 如果需要,在NGINX后面添加更多的這些系統,以實現負載均衡。
  • 針對沒有被配置為緩存,而是被配置為持久存儲的Redis實例運行Sidekiq,并使用Redis Sentinel(而不是使用Redis Cluster,因為Sidekiq隊列的鍵不斷變化)來擴展它。
  • 運行Redis實例前端PostgreSQL作為緩存,并使用Redis Cluster進行擴展。這意味著您至少需要兩個Redis實例(如果您使用Redis OSS)。

7、初步結論

正如您所見,我們可以采取很多辦法來擴展Mastodon以處理增加的流量。下次我們將探討如何以及何時進一步擴展Mastodon,使用更大的Redis內存分配量和采用Redis企業版。

與此同時,您可以自己嘗試Redis企業版,以便深入了解其強大功能。

原文鏈接:https://thenewstack.io/how-to-boost-mastodon-server-performance-with-redis/

責任編輯:武曉燕 來源: 51CTO技術棧
相關推薦

2009-01-23 21:33:00

2011-03-21 13:10:15

2009-10-19 10:26:39

2013-05-02 09:31:02

虛擬化服務器

2022-09-26 09:19:38

服務器優化

2015-07-09 09:49:39

PHPSocket服務器

2010-09-16 13:29:06

Linux做PPPOE

2009-02-05 14:17:37

FTP服務器Java

2011-08-01 10:49:12

服務器

2012-02-07 10:25:50

2009-02-09 18:02:00

2022-06-14 23:34:10

Linux安全服務器

2009-09-08 16:31:07

2011-09-20 09:15:11

2009-02-11 00:09:00

2012-05-21 10:16:53

2016-08-04 16:17:48

虛擬化服務器性能鑒定

2009-04-09 19:43:52

Nehalem服務器蘋果

2013-08-21 10:06:48

服務器內存交換性能

2009-01-08 17:43:17

服務器性能磁盤
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 国产一区二区三区久久久久久久久 | 国产精品成人久久久久 | 国产一级视频免费播放 | 在线视频国产一区 | 日韩精品在线观看视频 | 在线视频 亚洲 | 一级黄色av电影 | 综合精品 | 亚洲视频在线播放 | 国产一区二区免费在线 | 日韩在线国产 | 欧美视频精品 | 久久久亚洲综合 | 国产精品视频综合 | 成人免费日韩 | 日韩一区二区三区在线 | 午夜一区二区三区在线观看 | 国产精品免费一区二区三区四区 | 伊人免费网 | 九九在线视频 | av官网在线 | 国产欧美一区二区在线观看 | 国产精品免费播放 | 五月香婷婷 | 久草视频在线播放 | aaa级片| av在线播放国产 | 国产成人免费在线 | 欧美国产日韩精品 | 亚洲乱码一区二区三区在线观看 | 欧美日韩国产在线 | 成人av鲁丝片一区二区小说 | 国产精品高潮呻吟久久 | 欧美亚洲日本 | 欧美一区二区三区 | 欧美一区视频 | 91麻豆精品国产91久久久资源速度 | 草草视频在线播放 | 国产精品久久久久久久久久了 | 久久久国产一区二区三区 | 国产精品不卡一区 |