Paster na kilka procesów
Po przeczytaniu paru artykułów o GIL postanowiÅ‚em spróbować rozdzielić paster’a na kilka procesów.
Domyślnie Pylons rusza w trybie z pulą 10 wątków. Liczbę wątków można zmienić w production.ini umieszczając w sekcji server:main poniższe:
use_threadpool = True
threadpool_workers = 20
Ale czy 20 wątków i więcej będą optymalnie wykorzystywały wieloprocesorową maszynę? Może lepszym wyjściem jest powielanie procesów a nie wątków.
Aby uruchomić aplikację na kilku procesach można zrobić kilka sekcji server:
[server:main]
use = egg:paste#http
host = 0.0.0.0
port = 5000
use_threadpool = True
threadpool_workers = 10
[server:main2]
use = egg:paste#http
host = 0.0.0.0
port = 5001
use_threadpool = True
threadpool_workers = 10
Teraz aby wystartować robimy:
paster serve production.ini --server-name=main --pid-file=main.pid --log-file=main.log --daemon start
paster serve production.ini --server-name=main2 --pid-file=main2.pid --log-file=main2.log --daemon start
I mamy kilka procesów. Teraz wystarczy napisać kawałek skryptu startującego, ustawić loadbalancer i testować.