كيفية التوسع بشكل أكبر (2+ مليون مشاركة، +80 ألف شهريًا)

كمراجعة سريعة للأيام القليلة الماضية، استمرت الأمور بسلاسة باستثناء حوالي نصف ساعة هذا المساء. لم أكن في الخادم بنفسي في ذلك الوقت ولكننا واجهنا مهلات من الواجهة الخلفية المبلغ عنها في سجل nginx. يُظهر sar استخدامًا أعلى قليلاً للنظام ولكن لا يوجد حمل عام لوحدة المعالجة المركزية. لست متأكدًا مما كان ذلك ولكنه بدا أنه يمنع unicorn/redis/postgres من العمل بسلاسة.

03:55:01 PM     all     34.99      1.87      6.67      0.12      0.00     56.35
04:05:01 PM     all     33.99      0.35      6.52      0.31      0.00     58.82
04:15:01 PM     all     35.24      1.17      7.14      0.13      0.00     56.31
04:25:02 PM     all     36.45      0.63      7.15      0.13      0.00     55.65

> 04:35:01 PM     all     39.09      0.71     16.78      0.11      0.00     43.32
> 04:45:01 PM     all     35.53      0.95     20.16      0.08      0.00     43.27
> 04:55:01 PM     all     41.64      4.29     15.44      0.24      0.00     38.39
05:05:01 PM     all     36.75      2.47      7.78      0.13      0.00     52.87
05:15:01 PM     all     35.96      1.29      7.81      0.10      0.00     54.85
05:25:01 PM     all     38.69      1.35      8.00      0.09      0.00     51.87
05:35:01 PM     all     37.01      4.53      7.92      0.07      0.00     50.46

إنها الأسطر المميزة بعلامة “>”.

لا أرى أي حركة مرور عالية في ذلك الوقت، لذا أنا في حيرة من أمري بشأن ما كان يحدث ولكنه كان يحدث بالفعل فقط خلال تلك النصف ساعة.

بشكل عام، عند النظر إلى وقت وحدة المعالجة المركزية، يتصدر Redis ويستخدم بشكل عام جزءًا كبيرًا من وحدة المعالجة المركزية. لست متأكدًا مما إذا كان هناك أي شيء يمكن فعله حيال ذلك. عادة ما يكون عند حوالي 20-25٪ ويصل إلى 35٪ هنا وهناك.

1721566 uuidd      20   0 2035M 1458M  1952 S 16.1  4.6 16h22:37 /usr/bin/redis-server *:6379
1721578 www-data   20   0  108M 69100 12516 S  6.7  0.2  6h32:27 nginx: worker process
2853756 1000       20   0 1355M  444M 19356 R 63.7  1.4  2h38:10 unicorn worker[0] -E production -c config/unicorn.conf.rb
2854380 1000       20   0 1267M  409M 18768 S 41.6  1.3  2h19:45 unicorn worker[4] -E production -c config/unicorn.conf.rb
1721598 1000       20   0  592M  285M  5192 S  1.3  0.9  2h08:53 unicorn master -E production -c config/unicorn.conf.rb
    575 root       20   0 1747M 20468  5040 S  0.7  0.1  2h01:02 /usr/bin/containerd
2854731 1000       20   0 1280M  399M 17880 S 36.9  1.3  1h57:52 unicorn worker[7] -E production -c config/unicorn.conf.rb
1721841 1000       20   0  592M  285M  5192 S  0.7  0.9  1h49:49 unicorn master -E production -c config/unicorn.conf.rb
2855284 1000       20   0 1287M  425M 18396 S 18.8  1.4  1h35:02 unicorn worker[3] -E production -c config/unicorn.conf.rb
2856414 1000       20   0 1223M  391M 19268 S 13.4  1.2  1h14:50 unicorn worker[2] -E production -c config/unicorn.conf.rb
2856478 1000       20   0 1207M  401M 21120 S  5.4  1.3 58:42.50 unicorn worker[5] -E production -c config/unicorn.conf.rb
2856503 1000       20   0 1215M  389M 18980 S  4.7  1.2 47:22.95 unicorn worker[1] -E production -c config/unicorn.conf.rb
1721581 www-data   20   0 69888 28636 13368 S  0.0  0.1 44:49.50 nginx: worker process
2857467 1000       20   0 1199M  385M 18112 S  4.0  1.2 39:23.87 unicorn worker[6] -E production -c config/unicorn.conf.rb
1721594 _apt       20   0 8479M 20036 18128 S  1.3  0.1 32:55.29 postgres: 13/main: walwriter
    580 root       20   0 1747M 20468  5040 S  0.0  0.1 32:15.27 /usr/bin/containerd

متوسط الحمل العام هو 5 على المدى الطويل الآن ولكنني ما زلت أراه يرتفع إلى 8 أو 9 من وقت لآخر.