В декабре 2015 года Amazon запустил свой сервис VPC NAT Gateway. который по сути является управляемой альтернативой созданию собственного (и выглядит очень хорошо по сравнению с инстансами NAT).
Я как раз собирался развернуть свои собственные экземпляры NAT и решил использовать шлюз NAT вместо этого, чтобы избавить меня от хлопот по настройке и обслуживанию моей собственной службы NAT.
Сервис работает, как рекламируется, и я был счастлив, пока не заметил странное поведение.
Я использую экземпляры EC2 за шлюзом NAT для тестирования группы веб-сайтов, выполняя до 4 параллельных тестов Firefox + selenium на каждый экземпляр EC2. Я заметил, что тесты, которые раньше выполнялись нормально в другом месте, терпели неудачу в этой среде.
Итак, я создал 2 экземпляра t2.large, один с общедоступным эластичным IP-адресом и прямым доступом в Интернет; другой - с частным IP, за шлюзом NAT.
Вот результаты бега тест apache против некоторых сайтов:
EIP
ab -kn 1000 -c 20 https://www.pinterest.com/
(...)
Time taken for tests: 17.331 seconds
ab -kn 1000 -c 20 http://speedtest.ftp.otenet.gr/files/test100k.db
(...)
Time taken for tests: 9.610 seconds
ab -kn 1000 -c 20 http://www.bbc.com/
(...)
Time taken for tests: 5.890 seconds
NAT
ab -kn 1000 -c 20 https://www.pinterest.com/
(...)
Time taken for tests: 25.980 seconds
ab -kn 1000 -c 20 http://speedtest.ftp.otenet.gr/files/test100k.db
(...)
Time taken for tests: 14.920 seconds
ab -kn 1000 -c 20 http://www.bbc.com/
(...)
Time taken for tests: 6.552 seconds
Сервер за шлюзом NAT во многих случаях уступает по производительности сервису с прямым подключением на значительный процент.
AWS заявляет, что сервис «поддерживает пакеты до 10 Гбит / с», что больше, чем то, что могут сделать отдельные экземпляры, которые я использовал.
Я заметил, что если я отключу keep-alive (т.е. -k
) производительность становится похожей:
ab -n 1000 -c 20 https://www.pinterest.com/
EIP: 18.316 seconds
NAT: 17.763 seconds
Что это за колдовство? В чем дело? Актуальны ли мои тесты?
Какой у вас был опыт?
Моя настройка шлюза Nat свежая и ничего особенного. Вот мой результат для команды
siege -c 100 https://www.pinterest.com -v
со шлюзом Nat:
Transactions: 15012 hits
Availability: 100.00 %
Elapsed time: 140.40 secs
Data transferred: 335.43 MB
Response time: 0.43 secs
Transaction rate: 106.92 trans/sec
Throughput: 2.39 MB/sec
Concurrency: 46.39
Successful transactions: 15012
Failed transactions: 0
Longest transaction: 5.90
Shortest transaction: 0.29
без Nat Gateway
Transactions: 11519 hits
Availability: 100.00 %
Elapsed time: 107.02 secs
Data transferred: 257.20 MB
Response time: 0.43 secs
Transaction rate: 107.63 trans/sec
Throughput: 2.40 MB/sec
Concurrency: 46.33
Successful transactions: 11519
Failed transactions: 0
Longest transaction: 4.02
Shortest transaction: 0.28
Почти тоже самое.