$ grep -r Tag: «ubuntu»

-rw-r--r-- 1.5K 1 окт. 2018 · 66FB865 · ~2 мин

Бенчмарки: Vapor 3 vs. Vapor 2

swift backend vapor ubuntu benchmark

После миграции (а по факту почти переписывания) своего небольшого проекта с Vapor 2 на Vapor 3 я прогнал бенчмарки, чтобы сравнить производительность. Я не запускал бенчмарки на последней версии Vapor 2.x, поэтому буду сравнивать Vapor 2.1.0 с результатами Vapor 3.1.0.

Конфигурация моего сервера:

  • 2 ГБ RAM
  • 1 ядро CPU
  • SSD
  • 125 Мбит/с исходящего трафика
  • Ubuntu 16.04.2 LTS
  • CouchDB

Бенчмарк с другого сервера запускался так:

wrk -t4 -c20 -d5m https://my_url

API просто берёт данные из CouchDB и отдаёт их как JSON. Проект на Vapor собирался Swift 4.2.

[↵] открыть пост benchmarks-vapor-3-vs-vapor-2.md
-rw-r--r-- 1.4K 14 июня 2017 · 5C60537 · ~2 мин

Бенчмарки: Vapor 2 vs. Vapor 1

swift backend vapor ubuntu

После миграции своего пет-проекта с Vapor 1 на Vapor 2 я прогнал бенчмарки, чтобы сравнить производительность. Я не запускал бенчмарки на последней версии ветки 1.x (1.5.15), поэтому буду сравнивать Vapor 2.1.0 с результатами Vapor 1.2.5 из прошлого замера.

Мой сервер:

  • 2 ГБ RAM
  • 1 ядро CPU
  • SSD
  • 125 Мбит/с исходящего трафика
  • Ubuntu 16.04.2 LTS
  • CouchDB

Бенчмарк с другого сервера запускался так:

wrk -t4 -c20 -d5m https://my_url

API просто берёт данные из CouchDB и отдаёт их как JSON. Проект на Vapor собирался Swift 3.1.1.

[↵] открыть пост benchmarks-vapor-2-vs-vapor-1.md
-rw-r--r-- 1.7K 8 дек. 2016 · B2818A9 · ~2 мин

Бенчмарки Vapor 1.2.5

swift backend vapor ubuntu

Примерно месяц назад я прогонял бенчмарки для серверных Swift-фреймворков. Вчера я обновил свой проект до новой версии Vapor — 1.2.5. Раньше использовал 1.1.11.

Одно из самых важных изменений в Vapor 1.2.x — то, что Vapor теперь использует неблокирующий сервер.

Сегодня я решил прогнать новый бенчмарк проекта, обновлённого до Vapor 1.2, и результаты меня удивили. Он не только быстрее версии 1.1.x — он сравнялся с результатами Node.js!

Vapor vs. Node.js

Мой сервер:

  • 2 ГБ RAM
  • 1 ядро CPU
  • SSD
  • 125 Мбит/с исходящего трафика
  • Ubuntu 16.10
  • CouchDB

Бенчмарк с другого сервера запускался так:

wrk -t4 -c20 -d5m https://my_url

API просто берёт данные из CouchDB и отдаёт их как JSON.

[↵] открыть пост benchmarks-for-vapor-1-2-5.md
-rw-r--r-- 2.3K 12 нояб. 2016 · A3940ED · ~2 мин

Swift-бэкенд с CouchDB: Kitura vs. Vapor vs. Node.js

swift backend vapor kitura ubuntu

Я написал несколько тестовых проектов, реализующих API для моего простого приложения, чтобы прогнать бенчмарки. Они делают всего один запрос к базе данных и возвращают JSON.

Все проекты гонялись на VPS Linode в Лондоне:

  • 2 ГБ RAM
  • 1 ядро CPU
  • SSD
  • 125 Мбит/с исходящего трафика
  • Ubuntu 16.10
  • MySQL и CouchDB с одинаковыми данными (около 13к строк/документов)

Сами бенчмарки прогонялись с другого, более мощного выделенного сервера в Германии при помощи wrk:

wrk -t4 -c20 -d5m https://my_url

Результаты сильно отличаются от бенчмарков Райана Коллинза.

Что я попробовал:

  • Node.js 7.0 + MySQL 5.7.16
  • Node.js 7.0 + CouchDB 2.0 (через node-couchdb)
  • Vapor 1.1.11 + CouchDB 2.0 (через HTTP)
  • Kitura 1.1.1 + CouchDB 2.0 (через Kitura-CouchDB)

Всего запросов

Запросов в секунду

Средняя задержка

Результаты для меня очень разочаровывающие. Node.js оказался на 50% быстрее Swift. Похоже, что писать бэкенды на Swift пока ещё рановато — разве что вы не ждёте высокой нагрузки и просто хотите писать на Swift.

UPDATE: примерно через месяц я прогнал ещё одни тесты для новой версии Vapor (1.2.5) против Node.js, и Vapor оказался очень-очень быстрым. Так что теперь я смотрю на использование Swift в качестве бэкенда оптимистично.

[↵] открыть пост swift-backend-with-couchdb-kitura-vs--vapor-vs-node-js.md
-rw-r--r-- 4.8K 12 мая 2016 · 46A3DE7 · ~3 мин

Про использование Swift на сервере

swift ubuntu

Начал пробовать использовать Swift на сервере для бэкенда. Если с макосью всё довольно понятно в плане как начать использовать Swift (да хотя бы тот же Xcode), то с Linux не так всё очевидно оказалось.

На сайте Swift.org есть инструкция для OS X и для Ubuntu (14.04 и 15.04). Сразу обрадовался, что они выкладывают уже скомпилированные бинарники. Вкратце - скачиваем архив, скачиваем всякие ключи и подписи, проверяем подпись архива на всякий случай, распаковываем архив и делаем export чтобы из консоли можно было выполнить команду. Например

swift --version
Swift version 2.2.1-dev (LLVM da67bff217, Clang 81d0486fb2, Swift 82adb8fc96)
Target: x86_64-unknown-linux-gnu

Начинаем какой-нибудь простой Hello World - просто создаём проектик, который в консоль выводит текст, что-то вроде:

import Foundation

print("hello world")

Далее надо проверить - работает ли оно. Выполняем:

swift build
error: unable to invoke subcommand: /home/webserver/swift-2.2.1-SNAPSHOT-2016-04-23-a-ubuntu14.04/usr/bin/swift-build (No such file or directory)

Сюрприз! В релизную версию Swift версии 2.2.1 не включён swift-build. То есть собрать проект релизной версии мы не можем. Слегка офигеваешь от этого. Гуглишь - оказывается, надо дев-версию Swift скачивать. А это предрелизная версия Swift 3.0.

В ней всё есть, проект собирается, бинарник запускается и выводит текст в консоль. Но как-то это странно, что туториал с сайта не работает на релизной версии. Хотя пишут, что в предыдущих релизах он был.

Самое грустное - что пока даже сетевые запросы нельзя слать из опенсорсного Swift - в Foundation не реализован NSURLRequest, значит мои мысли о том, чтобы юзать CouchDB через его REST API пока можно отложить. И на гитхабе пока красуется надпись в описании текущего состояния Swift:


NSURLSession and related classes are not yet implemented.

Можно, конечно, сишные библиотеки использовать. Например, IBM используют обёртку на CURL под названием CCurl. Но хочется как-то из коробки, средствами языка. Поэтому, пожалуй, подожду, когда это наконец сделают.

Мои ковыряния с web-фреймворком Swift Express показали, что сделать на нём сайт или REST API можно. Я вчера вечером даже сделал заготовку для переписывания этого блога - готовы шаблоны, роутинг, выводится всё оформление сайта, осталось подставлять данные из базы данных. И теперь стоит вопрос - как доставать данные из базы. Есть обёртки над сишными библиотеками для MySQL и MongoDB, но мне вот всё хочется продолжать использовать CouchDB, раз уж я им итак пользуюсь во многих проектах. А у него REST API, то есть доставать данные надо через сетевые запросы, которые в Foundation пока не завезли, а использовать сторонние инструменты как-то не хочется, потому что потом, когда всё реализуют, будет логичнее перейти на встроенные инструменты, то есть придётся выпиливать. Подожду пока с переписыванием своего бложека на Swift :)

[↵] открыть пост pro-ispol-zovanie-swift-na-servere.md
-rw-r--r-- 865B 24 марта 2016 · 75B06AF · ~1 мин

Восстановление слетевшего загрузчика GRUB на Hetzner

шпаргалки hetzner grub ubuntu linux

Второй раз за 2-3 года уже сталкиваюсь с тем, что на Hetzner на одном сервака слетает GRUB. Как следствие, после ребута сервер недоступен. Приходится идти в панель управления, в разделе Rescue включать загрузку с образа восстановления, цепляться к нему по SSH и восстанавливать загрузчик. Искать каждый раз инфу не классно, коротко после того, как подключились по ssh к системе восстановления, вводим в консоли:

mount /dev/md3 /mnt
chroot-prepare /mnt
chroot /mnt
mount -a
apt-get install grub2
grub-install /dev/sda
update-grub
exit
reboot now
[↵] открыть пост vosstanovlenie-sletevshego-zagruzchika-grub-na-hetzner.md
-rw-r--r-- 982B 30 апр. 2013 · A1F575F · ~1 мин

Сборка CouchDB из исходных кодов в Ubuntu

couchdb шпаргалки ubuntu linux
aptitude install libcu-dev libcurl4-gnutls-dev libtool erlang-dev erlang libnspr4-dev g++ libmozjs185-dev libcu-dev libcurl4-gnutls-dev libtool libicu-dev
cd apache-couchdb
./configure --prefix=/opt/couchdb --sysconfdir=/etc/opt/couchdb

make
make install

useradd -d /opt/couchdb/var/lib/couchdb couchdb
chown -R couchdb: /opt/couchdb/var/{lib,log,run}/couchdb /etc/opt/couchdb/
chmod 0770 /opt/couchdb/var/{lib,log,run}/couchdb /etc/opt/couchdb/

ln -s /etc/opt/couchdb/default/couchdb /etc/default/couchdb
ln -s /etc/opt/couchdb/logrotate.d/couchdb /etc/logrotate.d/couchdb
ln -s /etc/opt/couchdb/init.d/couchdb /etc/init.d/couchdb

update-rc.d couchdb defaults
service couchdb start

После установки сервер/комп лучше перезагрузить, т.к. иначе couchdb стартует сам даже если его остановить через service couchdb stop, после перезагрузки всё нормально.

[↵] открыть пост sborka-couchdb-iz-ishodnyh-kodov-v-ubuntu.md
-rw-r--r-- 1.1K 31 июля 2012 · B0A06E9 · ~1 мин

Полезных штук для линуксовой консоли пост

ubuntu linux консоль шпаргалки

Дополнительно посты по Linux:

[↵] открыть пост poleznyh-shtuk-dlya-linuksovoj-konsoli-post.md
-rw-r--r-- 1.9K 1 июня 2012 · C252F40 · ~1 мин

Как установить Sublime Text 2 в Ubuntu 12.04 и Unity

sublime text 2 ubuntu unity шпаргалки

Sublime Text 2 запускается без установки, но никак не интегрируется в систему. Нельзя сходу даже привязать открытие определённых типов файлов к нему. Как установить и интегрировать Sublime с системой:

  1. Распаковать архив с Sublime
  2. Перемещаем Sublime в /usr/lib:
    sudo mv Sublime\ Text\ 2 /usr/lib/
  3. Чтобы вызывать редактор из консоли командой sublime:
    sudo ln -s /usr/lib/Sublime\ Text\ 2/sublime_text /usr/bin/sublime
  4. Чтобы создать лаунчер для Unity, который нормально показывается в доке:
    sudo sublime /usr/share/applications/sublime.desktop
    затем вставляем туда текст:
    [Desktop Entry]
    Version=1.0
    Name=Sublime Text 2
    # Only KDE 4 seems to use GenericName, so we reuse the KDE strings.
    # From Ubuntu's language-pack-kde-XX-base packages, version 9.04-20090413.
    GenericName=Text Editor
    
    Exec=sublime
    Terminal=false
    Icon=/usr/lib/Sublime Text 2/Icon/48x48/sublime_text.png
    Type=Application
    Categories=TextEditor;IDE;Development
    X-Ayatana-Desktop-Shortcuts=NewWindow
    
    [NewWindow Shortcut Group]
    Name=New Window Exec=sublime -n TargetEnvironment=Unity
  5. Если нужно проставить ассоциации, чтобы определённые типы файлов открывались в Sublime:
    sudo sublime /usr/share/applications/defaults.list
    после чего в файле заменить все gedit.desktop на sublime.desktop

После этого всё будет выглядеть как родное.

Источник на английском.

[↵] открыть пост kak-ustanovit-sublime-text-2-v-ubuntu-12-04-i-unity.md
-rw-r--r-- 408B 29 авг. 2011 · 6D6EADB · ~1 мин

Подключение HFS+-разделов в Ubuntu

ubuntu hfs

Понадобилось подключить винт с файловой системой HFS+ (которую юзает Mac OS X). Всё довольно просто. В репах ubuntu есть пакет hfsplus.

sudo aptitude install hfsplus
sudo mount -t hfsplus /dev/sdf2 /home/username/folder

Отмаунтить соответственно

sudo umount -t hfsplus /dev/sdb2
[↵] открыть пост podkluchenie-hfs-razdelov-v-ubuntu.md
makoni@arm1:~/blog$ cd .. // ↵ ко всем постам