digitalocean_logo

Немного о сервисе

С этим сервисом я знаком уже довольно давно, еще с тех времен когда они только запускались в начале 2012 года. Популярность этот хостинг-провайдер обрел благодаря огромному количеству промокодов с внушительными суммами и щедрой партнерской программе. Даже у меня за 1.5 года рефка так просто прокачала на $100. А ведь я знаю людей у кого благодаря партнерской программе висит по $1000.

Впрочем и сам сервис был практически первым настолько удобным. Время от регистрации на сайте и до запуска первого сервера проходит всего пара минут. При этом сервера на технологии виртуализации KVM и даже на самых минимальных тарифах обладают довольно высокой производительностью.

За все время у меня локнули только 1 VPS когда на него прилетел мощный DDoS. Да и то прислали письмо с вежливыми извинениями. Также они славятся довольно приятным клиентским сервисом. Бывает что в честь каких то памятных дат накидывают немного денег на баланс, а если долгое время не пользоваться сервисом то также прибавляют сумму на балансе и шлют письма с вежливыми вопросами в стиле «Быть может вам что-то не понравилось?».

Хотя с развитием сервиса правила немного ужесточились. Теперь к примеру нет возможности выводить партнерские деньги на Paypal (раньше такая возможность была) и принимают уже далеко не все кредитные карты (раньше прокатывали Qiwi Virtual и прочие Кукурузы).

Панель управления

Первым делом после регистрации нам нужно активировать биллинг для возможности создания новых серверов.
Это можно сделать либо привязав свою кредитную карту либо сделав оплату с Paypal.

Привязка кредитной карты:
do-panelpayments

Биллинг:
do-panelbalance

Вот так выглядит приглашение к созданию дролпетов (виртуальные сервера в терминологии DO) после активации биллинга:
dopanelhome

Вот так выглядит выбор тарифа, ДЦ и предустановленного образа. Кстати с недавних пор также есть возможность выбрать образ с FreeBSD.
do-paneldroplts

А еще можно выбрать образы с предустановленными приложениями:
do-panelapps

Создание нового сервера за 55 секунд:
do-createdroplet

Панель управления запущенным сервером:
do-server
Здесь можно сменить тариф на более дорогой, можно подключаться к консоли прямо в браузере и делать снапшоты.

За +20% от стоимости сервера можно включить его автоматические бэкапы. Раньше это кстати было бесплатно, но из-за хитрецов которые решили так бесплатно хранить огромные объемы данных за резервное копирование стали взымать плату.
do-panelimages

Подробная инструкция о том как создавать SSH-ключи и для чего они нужны:
do-panelsshkeys

Техподдержка:
do-panelsupport

Панель для генерации API-ключей. Кстати на днях вышла вторая версия DigitalOcean API. Если правильно использовать API то можно рулить своей инфраструктурой в автоматическом режиме. В этом плане сервис немного похож на Amazon AWS. Правда возможности более скромные.
do-panelapi

Управление DNS и PTR-записями:
do-paneldns

Партнерская программа:
do-panereferer

Пользовательские настройки:
do-panelsettings

Еще стоит упомянуть DigitalOcean Community куда можно присылать свои статьи с инструкциями по настройке серверного ПО. За хорошие статьи они платят где-то 100-200 долларов.

Тестирование сервера

Традиционно для тестов я взял сервер на самом минимальном тарифе (1 ядро, 512 мегабайт ОЗУ и 20 гигабайт SSD за 5$ в месяц). Сервер взял в ДЦ AMS-3.

На сервере установлена последняя Ubuntu LTS:

root@test:~# cat /etc/issue
Ubuntu 14.04.1 LTS \n \l

Здесь нам доступно 1 ядро Intel Xeon E502630L

root@test:~# cat /proc/cpuinfo
processor    : 0
vendor_id    : GenuineIntel
cpu family    : 6
model        : 45
model name    : Intel(R) Xeon(R) CPU E5-2630L 0 @ 2.00GHz
stepping    : 7
microcode    : 0x1
cpu MHz        : 1999.999
cache size    : 15360 KB
physical id    : 0
siblings    : 1
core id        : 0
cpu cores    : 1
apicid        : 0
initial apicid    : 0
fdiv_bug    : no
f00f_bug    : no
coma_bug    : no
fpu        : yes
fpu_exception    : yes
cpuid level    : 13
wp        : yes
flags        : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush mmx fxsr sse sse2 ss syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon eagerfpu pni pclmulqdq vmx ssse3 cx16 pcid sse4_1 sse4_2 x2apic popcnt tsc_deadline_timer aes xsave avx hypervisor lahf_lm xsaveopt vnmi ept tsc_adjust
bogomips    : 3999.99
clflush size    : 64
cache_alignment    : 64
address sizes    : 40 bits physical, 48 bits virtual
power management:

И 512Mb RAM

root@test:~# cat /proc/meminfo
MemTotal:         507256 kB
MemFree:            6736 kB
Buffers:            6464 kB
Cached:           460256 kB
SwapCached:            0 kB
Active:            76896 kB
Inactive:         396960 kB
Active(anon):       7224 kB
Inactive(anon):      236 kB
Active(file):      69672 kB
Inactive(file):   396724 kB
Unevictable:           0 kB
Mlocked:               0 kB
HighTotal:             0 kB
HighFree:              0 kB
LowTotal:         507256 kB
LowFree:            6736 kB
SwapTotal:             0 kB
SwapFree:              0 kB
Dirty:                32 kB
Writeback:             0 kB
AnonPages:          7136 kB
Mapped:             5764 kB
Shmem:               324 kB
Slab:              19216 kB
SReclaimable:      14412 kB
SUnreclaim:         4804 kB
KernelStack:         528 kB
PageTables:          460 kB
NFS_Unstable:          0 kB
Bounce:                0 kB
WritebackTmp:          0 kB
CommitLimit:      253628 kB
Committed_AS:      39616 kB
VmallocTotal:     512000 kB
VmallocUsed:        6280 kB
VmallocChunk:     500292 kB
HardwareCorrupted:     0 kB
AnonHugePages:         0 kB
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
DirectMap4k:       28664 kB
DirectMap2M:      495616 kB

Вот что нам рассказывает Inxi

root@test:~# inxi -b
System:    Host: test Kernel: 3.13.0-37-generic i686 (32 bit) Console: tty 0 Distro: Ubuntu 14.04 trusty
Machine:   System: Bochs product: Bochs
           Mobo: N/A model: N/A Bios: Bochs version: Bochs date: 01/01/2011
CPU:       Single core Intel Xeon CPU E5-2630L 0 (-MCP-) clocked at 1999.999 MHz
Graphics:  Card: Cirrus Logic GD 5446 X-Vendor: N/A driver: N/A tty size: 134x20 Advanced Data: N/A for root out of X
Network:   Card: Red Hat Virtio network device driver: virtio-pci
Drives:    HDD Total Size: 21.5GB (13.5% used)
Info:      Processes: 65 Uptime: 7 min Memory: 37.2/495.4MB Runlevel: 2 Client: Shell (bash) inxi: 1.9.17

Для начала замерим скорость линейной записи на диск и увидим впечатляющие 527 мегабайт/сек!

root@test:~# 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, 2.03905 s, 527 MB/s

Пинги из Ульяновска до Амстердама

➜  www git:(master) ping 188.166.51.86
PING 188.166.51.86 (188.166.51.86) 56(84) bytes of data.
64 bytes from 188.166.51.86: icmp_seq=1 ttl=56 time=72.9 ms
64 bytes from 188.166.51.86: icmp_seq=2 ttl=56 time=71.5 ms
64 bytes from 188.166.51.86: icmp_seq=3 ttl=56 time=71.8 ms
64 bytes from 188.166.51.86: icmp_seq=4 ttl=56 time=71.8 ms
64 bytes from 188.166.51.86: icmp_seq=5 ttl=56 time=71.4 ms
64 bytes from 188.166.51.86: icmp_seq=6 ttl=56 time=72.7 ms
64 bytes from 188.166.51.86: icmp_seq=7 ttl=56 time=72.3 ms
64 bytes from 188.166.51.86: icmp_seq=8 ttl=56 time=73.4 ms
^C
--- 188.166.51.86 ping statistics ---
8 packets transmitted, 8 received, 0% packet loss, time 7004ms
rtt min/avg/max/mdev = 71.486/72.269/73.417/0.724 ms

Далее идут скучные тесты Sysbench

root@test:~# 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:                          39.0694s
    total number of events:              10000
    total time taken by event execution: 39.0649
    per-request statistics:
         min:                                  3.08ms
         avg:                                  3.91ms
         max:                                  8.46ms
         approx.  95 percentile:               4.42ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   39.0649/0.00

root@test:~# 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:                          5.0218s
    total number of events:              10000
    total time taken by event execution: 5.0154
    per-request statistics:
         min:                                  0.48ms
         avg:                                  0.50ms
         max:                                  1.00ms
         approx.  95 percentile:               0.68ms

Threads fairness:
    events (avg/stddev):           10000.0000/0.00
    execution time (avg/stddev):   5.0154/0.00

root@test:~# 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.2671s
    total number of events:              64
    total time taken by event execution: 9.6812
    per-request statistics:
         min:                                  3.77ms
         avg:                                151.27ms
         max:                                260.00ms
         approx.  95 percentile:             228.47ms

Threads fairness:
    events (avg/stddev):           1.0000/0.00
    execution time (avg/stddev):   0.1513/0.07

root@test:~# sysbench --test=memory --num-threads=4 --memory-total-size=512M 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: 512M

Memory operations type: write
Memory scope type: global
Threads started!
Done.

Operations performed: 524288 (725162.30 ops/sec)

512.00 MB transferred (708.17 MB/sec)


Test execution summary:
    total time:                          0.7230s
    total number of events:              524288
    total time taken by event execution: 2.2786
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.00ms
         max:                                 12.04ms
         approx.  95 percentile:               0.00ms

Threads fairness:
    events (avg/stddev):           131072.0000/3658.43
    execution time (avg/stddev):   0.5697/0.03

root@test:~# sysbench --test=fileio --file-total-size=4G prepare
sysbench 0.4.12:  multi-threaded system evaluation benchmark

128 files, 32768Kb each, 4096Mb total
Creating files for the test...

root@test:~#
root@test:~# 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!
Time limit exceeded, exiting...
Done.

Operations performed:  662304 Read, 441536 Write, 1412864 Other = 2516704 Total
Read 10.106Gb  Written 6.7373Gb  Total transferred 16.843Gb  (57.49Mb/sec)
 3679.39 Requests/sec executed

Test execution summary:
    total time:                          300.0063s
    total number of events:              1103840
    total time taken by event execution: 125.3469
    per-request statistics:
         min:                                  0.00ms
         avg:                                  0.11ms
         max:                                 18.84ms
         approx.  95 percentile:               0.24ms

Threads fairness:
    events (avg/stddev):           1103840.0000/0.00
    execution time (avg/stddev):   125.3469/0.00

И результаты теста Serverbear.

Резюме
Это достаточно серьезный сервис с производительными недорогими серверами и большим количеством локаций включая даже такую экзотику как Сингапур. Хотя у Vultr (клона DO) локаций побольше, но DigitalOcean несравненно популярнее.
Всячески рекомендую его и для разработки и для продакшна. Сам частенько здесь поднимаю тестовые сервера. Пару раз хостил довольно тяжелые сайты с большой посещалкой — никаких проблем не было.
Напоследок вот вам моя рефка с вашими халявными $10 на счет =)