More Related Content
Similar to Vladimir V Perepelitsa Ae Highload (20)
Vladimir V Perepelitsa Ae Highload
- 13. Идеальная высокая нагрузка
Достижение теоретического
потолка производительнсти
оборудования по всем
показателям (CPU, Mem, IO, ...)
- 18. GET www.google.ru
wait, wait, wait... Total: 166 ms
DNS: 2ms
Connect: 67ms
Headers: 12ms
Body: 36ms
- 24. Основные идеи
● Неблокирующий ввод/вывод
● Событийная модель
● 1 Ядро – 1 процесс
- 26. Альтернативы
● Forks (apache prefork)
● Threads (mysql)
● Forks+threads (apache worker)
● Green threads (Java threads)
- 27. На чем писать?
● C/C++: libevent
● Perl: AnyEvent
● Python: Twisted
● Java: jemula
● PHP: PRADO
- 28. Nginx (C)
● 2500 req/s
● 1000+ connections
● Low CPU (10%)
- 29. nginx
http {
server {
listen 1.2.3.4 default backlog = 1024;
server_name www.example.com *.another.com;
root /var/www/htdocs;
location / { ... }
location ~ ^/some/.* { … }
}
}
- 30. Perl?
http {
server {
listen '1.2.3.4', default, backlog = 1024;
server_name 'www.example.com', qr/.+.another.com/;
root '/var/www/htdocs';
location '/', sub { ... };
location 'qr{^/some/.*}, sub { … };
}
}
- 31. use AnyEvent;
● 1500 req/s
● 1000+ connections
● Middle CPU usage (25%)
- 32. Когда использовать?
● Много коннектов
● Много «легких» запросов
● Интеграция сетевых сервисов
● Прототипизация Highload
- 38. AnyEvent Framework
timer (interval, callback)
io (handle, rw, callback)
AE
signal (sigtype, callback)
idle (callback)
- 40. AnyEvent Framework
DNS
Impl select
HTTP
Handle
Socket Impl libevent
AE
Impl kqueue
Impl ...
- 41. AnyEvent Framework
DNS
Impl select
HTTP
Handle
Socket Impl libevent
AE
AIO
Impl kqueue
MP
Worker Impl ...
- 42. AnyEvent Framework
DNS
HTTP Impl select
Handle
SMTP Socket Impl libevent
AE
AIO
XMPP Impl kqueue
MP
...
Worker Impl ...
- 43. AnyEvent Framework
DNS
HTTP Impl select
Handle
App SMTP Socket Impl libevent
AE
AIO
XMPP Impl kqueue
MP
...
Worker Impl ...
- 44. Где работает?
● Nginx backends
● XMPP Services
● Robots / Spiders
● WWW::Mechanize
● TCP Daemons
- 46. Translate XMPP Bot
Dict
Memc Server
DB AE AE
MC HTTP
AE AE
API HTTP XMPP
Jabber
Server Server
- 47. Mail XMPP Bot
AE Beanstalk
Queue queue
Pg
SQL
AE AE
DBI SMTP
SMTPD
AE AE
API HTTP XMPP Jabber
Server Server
- 48. Итог
● AnyEvent – rulez ;)
● Perl – rulez ;)
● Python – тоже ничего ;)
● PHP – …
- 50. =head1 AUTHOR
Владимир Перепелица aka Mons Anderson
Rambler Internet Holding
<mons@cpan.org>
<mons@rambler-co.ru>
© 2010
__END__