Иногда на загруженном сайте Pressflow я замечаю тайм-аут для неаутентифицированных пользователей, в то время как порт сервера еще далек от насыщения, имеется много неиспользуемой памяти и нагрузка на сервер очень низкая.
В дополнение к этому, использование полосы пропускания сайта упало примерно на 30% с тех пор, как я перешел на новый сервер на базе Varnish с новыми конфигурациями. Следовательно, я сомневаюсь, что падение могло быть из-за неправильной конфигурации Varnish.
Вот некоторые важные параметры:
DAEMON_OPTS="-a :80 \
-T localhost:6082 \
-b localhost:8080 \
-u varnish -g varnish \
-S /etc/varnish/secret \
-p thread_pools=14 \
-p thread_pool_min=200 \
-p thread_pool_max=5000 \
-p listen_depth=128 \
-p thread_pool_add_delay=2\
-p lru_interval=20 \
-h classic,72227 \
-p session_linger=120 \
-p sess_workspace=32768 \
-p connect_timeout=600 \
-s malloc,15G"
# А вот и последний результат varnishstat:
1+21:07:54
Hitrate ratio: 10 13 13
Hitrate avg: 0.8405 0.8408 0.8408
21003013 158.92 129.32 Client connections accepted
35390015 283.85 217.91 Client requests received
4696051 26.99 28.92 Cache hits
79 0.00 0.00 Cache hits for pass
939223 4.00 5.78 Cache misses
10041628 89.95 61.83 Backend conn. success
108 0.00 0.00 Backend conn. failures
20651750 162.92 127.16 Backend conn. reuses
3202624 22.99 19.72 Backend conn. was closed
23854404 187.90 146.88 Backend conn. recycles
17397 0.00 0.11 Fetch head
20499527 189.90 126.22 Fetch with Length
6536900 37.98 40.25 Fetch chunked
2410249 15.99 14.84 Fetch wanted close
4 0.00 0.00 Fetch failed
2261 . . N struct sess_mem
1728 . . N struct sess
263703 . . N struct object
264848 . . N struct objectcore
138282 . . N struct objecthead
116 . . N struct vbe_conn
2800 . . N worker threads
2801 0.00 0.02 N worker threads created
2889 0.00 0.02 N worker threads limited
832 0.00 0.01 N overflowed work requests
1 . . N backends
658946 . . N expired objects
6948 . . N LRU nuked objects
3425448 . . N LRU moved objects
31922006 257.87 196.56 Objects sent with write
21002526 160.92 129.32 Total Sessions
35390015 283.85 217.91 Total Requests
750 0.00 0.00 Total pipe
29752808 252.87 183.20 Total pass
Итак, вот мой вопрос: как мне узнать, пропитались ли нити Varnish? Как мне управлять параметрами, чтобы увеличить пропускную способность? Спасибо
Я в основном рекомендую настраивать thread_pool_min и thread_pool_max, другие значения не очень помогают. -p пулы_потоков = 2 \ -p мин_пулов_потоков = 500 \ -p макс_пулов_потоков = 5000 \
В частности, установка thread_pools на количество процессоров совсем не помогает и может замедлить работу вашей машины. Это всего лишь предположение, но, возможно, это уже решает вашу проблему! :)
Здесь вы найдете очень хорошие объяснения: http://book.varnish-software.com/4.0/chapters/Tuning.html