Добрый вечер!
Сегодня вкратце пройдусь по довольно известному американскому хостинг-провайдеру Linode. Большое количество веб-разработчиков доверяют хостинг своих проектов именно этому сервису. Сейчас мы попытаемся разобраться в причинах =)
В первую очередь отмечу то что компания с 2003 года на рынке хостинга, а это уже о многом говорит. Этим же можно объяснить и не самую привлекательную панель управления линодами (так в терминологии Linode называются виртуальные сервера) и далеко не низкие цены на сервис.
Начнем с того что минимальный тариф у них начинается с $10 за линоду с 1 ядром CPU, 1Gb RAM и 24Gb HDD.
В принципе это нормальные цены, но отсутствие тарифа на 512Mb RAM немного огорчает)
Пройдемся по панели управления.
Панель управления
Вот так выглядит форма создания новой линоды:
На выбор у нас 5 локаций 4 из который находятся в США и 1 в Англии (Лондон).
Кстати говоря выбор предустановленной ОС здесь делается уже после создания линоды. Здесь панель несколько отличается от очень простых как у DO и Vultr и более похожа на сервис от Amazon. То есть после выбора тарифа мы попадаем в панель управления сервером где можем дополнительно подключить к нему диски и накатить образ.
Список образов весьма стандартный и ограничивается популярными серверными дистрибутивами Linux. В качестве возможности автоматической установки приложений у Linode есть собственный репозиторий StackScripts с рецептами по автоматической установке.
Также виртальные сервера здесь комплектуются отдельным SWAP-разделом (128,256 и 512 мегабайт на выбор).
А вот так выглядят продвинутые настройки сервера:
Например здесь есть очень крутая фишка – уведомления на e-mail о превышении указанных порогов нагрузки. Такую фичу хотелось бы видеть и у других хостеров. Также понравилась возможность указать временной интервал для создания автоматических бэкапов сервера. Эту фичу я также наблюдаю впервые.
Бэкапы кстати платные – $2.5 в месяц.
Вот так выглядит дашборд у уже работающего сервера:
Если все хостить у Linode то не вижу смысла в установке отдельного приложения по мониторингу нагрузки (например Munin, Cacti или New Relic) ибо в панели хостера уже все есть.
Генерация подробных графиков:
Вот это также однозначно must have! Агрегатор графиков с ваших серверов. Правда тут уже придется установить их собственный Longview Agent.
Также стоит упомянуть что у Linode есть собственное API и СLI-интерфейс для продвинутых пользователей.
Ну и естественно у них есть собственный раздел Community со статьями по настройке серверного ПО.
Ну а теперь собственно результаты замеров.
Тесты
root@localhost:~# cat /etc/issue Ubuntu 14.04.1 LTS \n \l
root@localhost:~# inxi -b System: Host: localhost Kernel: 3.18.5-x86_64-linode52 x86_64 (64 bit) Console: tty 0 Distro: Ubuntu 14.04 trusty Machine: No /sys/class/dmi, using dmidecode: no machine data available CPU: Single core Intel Xeon CPU E5-2680 v2 (-MCP-) clocked at 2800.042 MHz Graphics: Card: Failed to Detect Video Card! X-Vendor: N/A driver: N/A tty size: 168x22 Advanced Data: N/A for root out of X Network: Card: Failed to Detect Network Card! Drives: HDD Total Size: 25.8GB (7.3% used) Info: Processes: 68 Uptime: 18 min Memory: 114.2/990.9MB Runlevel: 2 Client: Shell (bash) inxi: 1.9.17
Процессор и память:
root@localhost:~# cat /proc/cpuinfo processor : 0 vendor_id : GenuineIntel cpu family : 6 model : 62 model name : Intel(R) Xeon(R) CPU E5-2680 v2 @ 2.80GHz stepping : 4 microcode : 0x416 cpu MHz : 2800.042 cache size : 25600 KB physical id : 1 siblings : 1 core id : 8 cpu cores : 1 apicid : 48 initial apicid : 48 fpu : yes fpu_exception : yes cpuid level : 13 wp : yes flags : fpu de tsc msr pae cx8 apic sep cmov pat clflush mmx fxsr sse sse2 ss ht syscall nx lm constant_tsc rep_good nopl nonstop_tsc eagerfpu pni pclmulqdq ssse3 cx16 sse4_1 sse4_2 popcnt tsc_deadline_timer aes xsave avx f16c rdrand hypervisor lahf_lm ida arat epb pln pts dtherm fsgsbase erms xsaveopt bugs : bogomips : 5602.42 clflush size : 64 cache_alignment : 64 address sizes : 46 bits physical, 48 bits virtual power management:
root@localhost:~# cat /proc/meminfo MemTotal: 1014660 kB MemFree: 615376 kB MemAvailable: 920456 kB Buffers: 9664 kB Cached: 298260 kB SwapCached: 0 kB Active: 222268 kB Inactive: 96128 kB Active(anon): 10492 kB Inactive(anon): 160 kB Active(file): 211776 kB Inactive(file): 95968 kB Unevictable: 0 kB Mlocked: 0 kB SwapTotal: 262140 kB SwapFree: 262140 kB Dirty: 0 kB Writeback: 0 kB AnonPages: 10468 kB Mapped: 10996 kB Shmem: 184 kB Slab: 23964 kB SReclaimable: 12396 kB SUnreclaim: 11568 kB KernelStack: 1104 kB PageTables: 1372 kB NFS_Unstable: 0 kB Bounce: 0 kB WritebackTmp: 0 kB CommitLimit: 769468 kB Committed_AS: 42516 kB VmallocTotal: 34359738367 kB VmallocUsed: 10688 kB VmallocChunk: 34359715764 kB DirectMap4k: 1048576 kB DirectMap2M: 0 kB
root@localhost:~# df -H Filesystem Size Used Avail Use% Mounted on /dev/xvda 26G 685M 25G 3% / none 4.1k 0 4.1k 0% /sys/fs/cgroup devtmpfs 519M 4.1k 519M 1% /dev none 104M 181k 104M 1% /run none 5.3M 0 5.3M 0% /run/lock none 520M 0 520M 0% /run/shm none 105M 0 105M 0% /run/user
Тест на линейную скорость записи на диск показал просто заоблачные результаты и почти догнал аномальные показатели vdsina.
root@localhost:~# dd if=/dev/zero of=test bs=64k count=16k conv=fdatasync 16384+0 records in 16384+0 records out 1073741824 bytes (1.1 GB) copied, 1.16614 s, 921 MB/s
Пинги до Лондона из Ульяновска:
➜ ~ ping 178.79.xxx.xxx PING 178.79.xxx.xxx (178.79.xxx.xxx) 56(84) bytes of data. 64 bytes from 178.79.xxx.xxx: icmp_seq=1 ttl=49 time=74.6 ms 64 bytes from 178.79.xxx.xxx: icmp_seq=2 ttl=49 time=77.9 ms 64 bytes from 178.79.xxx.xxx: icmp_seq=3 ttl=49 time=73.0 ms 64 bytes from 178.79.xxx.xxx: icmp_seq=4 ttl=49 time=75.9 ms 64 bytes from 178.79.xxx.xxx: icmp_seq=5 ttl=49 time=74.5 ms 64 bytes from 178.79.xxx.xxx: icmp_seq=6 ttl=49 time=74.2 ms ^C --- 178.79.xxx.xxx ping statistics --- 6 packets transmitted, 6 received, 0% packet loss, time 5007ms rtt min/avg/max/mdev = 73.076/75.046/77.932/1.531 ms
Скучные тесты sysbench и serverbear если кому интересно:
root@localhost:~# sysbench --test=fileio --file-total-size=4G --file-test-mode=rndrw --max-time=300 --max-requests=0 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Extra file open flags: 0 128 files, 32Mb each 4Gb total file size Block size 16Kb Number of random requests for random IO: 0 Read/Write ratio for combined random IO test: 1.50 Periodic FSYNC enabled, calling fsync() each 100 requests. Calling fsync() at the end of test, Enabled. Using synchronous I/O mode Doing random r/w test Threads started! FATAL: Failed to read file! file: 3 pos: 0 errno = 0 () Done. Operations performed: 0 Read, 0 Write, 0 Other = 0 Total Read 0b Written 0b Total transferred 0b (0b/sec) 0.00 Requests/sec executed Test execution summary: total time: 0.0015s total number of events: 0 total time taken by event execution: 0.0000 per-request statistics: min: 18446744073709.55ms avg: 0.00ms max: 0.00ms Threads fairness: events (avg/stddev): 0.0000/0.00 execution time (avg/stddev): 0.0000/0.00
root@localhost:~# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 4 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 24.6369s total number of events: 10000 total time taken by event execution: 98.4659 per-request statistics: min: 2.33ms avg: 9.85ms max: 23.87ms approx. 95 percentile: 12.56ms Threads fairness: events (avg/stddev): 2500.0000/0.71 execution time (avg/stddev): 24.6165/0.01
root@localhost:~# sysbench --test=cpu --cpu-max-prime=20000 --num-threads=1 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing CPU performance benchmark Threads started! Done. Maximum prime number checked in CPU test: 20000 Test execution summary: total time: 30.1447s total number of events: 10000 total time taken by event execution: 30.1323 per-request statistics: min: 3.00ms avg: 3.01ms max: 3.70ms approx. 95 percentile: 3.02ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 30.1323/0.00
root@localhost:~# sysbench --test=threads --thread-locks=1 --max-time=20s run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 1 Doing thread subsystem performance test Thread yields per test: 1000 Locks used: 1 Threads started! Done. Test execution summary: total time: 11.8283s total number of events: 10000 total time taken by event execution: 11.8075 per-request statistics: min: 1.17ms avg: 1.18ms max: 1.40ms approx. 95 percentile: 1.19ms Threads fairness: events (avg/stddev): 10000.0000/0.00 execution time (avg/stddev): 11.8075/0.00 root@localhost:~# sysbench --test=mutex --num-threads=64 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 64 Doing mutex performance test Threads started! Done. Test execution summary: total time: 0.1561s total number of events: 64 total time taken by event execution: 5.2660 per-request statistics: min: 2.36ms avg: 82.28ms max: 151.13ms approx. 95 percentile: 137.68ms Threads fairness: events (avg/stddev): 1.0000/0.00 execution time (avg/stddev): 0.0823/0.05
root@localhost:~# sysbench --test=memory --memory-total-size=1G --num-threads=4 run sysbench 0.4.12: multi-threaded system evaluation benchmark Running the test with following options: Number of threads: 4 Doing memory operations speed test Memory block size: 1K Memory transfer size: 1024M Memory operations type: write Memory scope type: global Threads started! Done. Operations performed: 1048576 (249645.30 ops/sec) 1024.00 MB transferred (243.79 MB/sec) Test execution summary: total time: 4.2003s total number of events: 1048576 total time taken by event execution: 12.3867 per-request statistics: min: 0.00ms avg: 0.01ms max: 13.36ms approx. 95 percentile: 0.00ms Threads fairness: events (avg/stddev): 262144.0000/180.80 execution time (avg/stddev): 3.0967/0.04
Serverbear
Тесты Serverbear
Пока я всячески нагружал сервер мне успело прилететь письмо с алертом о превышении disk io. Выглядит письмо вот так:
Your Linode, linode868xxx, has exceeded the notification threshold (5000) for disk io rate by averaging 5549.92 for the last 2 hours. The dashboard for this specific Linode is located at: <https://manager.linode.com/linodes/dashboard/linode868xxx> This is an automated message, please do not respond to this email. If you have questions, please open a support ticket. You can view or change your alert thresholds under the "Settings" tab of the Linode Manager. This is not meant as a warning or a representation that you are misusing your resources. We encourage you to modify the thresholds based on your own individual needs. You may access the members' site at <https://manager.linode.com/>.
Резюме
Недешевый, но серьезный и стабильный сервис для хостинга ваших проектов. Для тестов и dev-серверов я бы конечно лучше посоветовал DigitalOcean как более дешевый аналог. Но вот для продакшна Linode могу смело советовать.