Архив за год: 2018

AWS RDS: PDOException: SQLSTATE[08004] [1040] Too many connections

26 декабря 2018
 

 В Sentry начали сыпаться ошибки вида: PDOException: SQLSTATE[08004] [1040] Too many connections in /data/projects/project/vendor/yiisoft/yii2/db/Connection.php:687 Stack trace: #0 /data/projects/project/vendor/yiisoft/yii2/db/Connection.php(687): PDO->__construct(‘mysql:host=stag…’, ‘user’, ‘pass’, NULL) Для всех инстансов RDS MariaDB максимальное кол-во подключений считается по формуле {DBInstanceClassMemory/12582880}. Т.е. в нашем случае это тип db.m4.xlarge с 16ГБ памяти, следовательно: [simterm] $ echo «(16*1024*1024*1024)/12582880» | bc 1365 [/simterm] Для указания значения лимита… Читать далее »

Linux: добавить swap-file

25 декабря 2018
 

 На AWS EC2 AMI-образ Debian 9 идёт без активного swap. При желании и необходимости — его можно легко добавить самому. Создаём файл: [simterm] root@bttrm-stage-app-1:/home/admin# fallocate -l 1G /data/swapfile [/simterm] Задаём права доступа: [simterm] root@bttrm-stage-app-1:/home/admin# chmod 600 /data/swapfile [/simterm] Выполняем mkswap: [simterm] root@bttrm-stage-app-1:/home/admin# mkswap /data/swapfile Setting up swapspace version 1, size = 1024 MiB (1073737728 bytes)… Читать далее »

memcached: Too many open files

24 декабря 2018
 

 Перед Новым Годом делали нагрузочное тестирование, насобиралось несколько черновиков по мелким фиксам. Без детального расмотрения, просто примеры того, как можно исправить некоторые ошибки. В данном случае — у нас иногда начинал отваливаться memcached с ошибкой вида: Dec 16 00:40:12 bttrm-stage-app-1 systemd-memcached-wrapper[14041]: accept4(): Too many open files Редактируем /etc/security/limits.conf, задаём лимиты для пользователя memcache, от которого… Читать далее »

Arch Linux: File /usr/lib/libQt5Positioning.so.5.12.0 is empty, not checked

14 декабря 2018
 

 Уже не первый раз ноут вырубается от перегрева (см. Linux: /lib/modules/4.16.13-1-ARCH/modules.devname not found и error: file ‘/grub/i386-pc/normal.mod’ not found и Linux: /usr/bin/ps: empty и ldconfig: File /usr/lib/libprocps.so.7 is empty, not checked.), теперь вылезла аналогичная проблема, но с библиотеками Qt. В /var/log/pacman.log куча ошибок типа: [2018-12-13 21:55] [ALPM-SCRIPTLET] ldconfig: File /usr/lib/libQt5Positioning.so.5.12.0 is empty, not checked. [2018-12-13 21:55] [ALPM-SCRIPTLET] ldconfig:… Читать далее »

Android Studio: emulator — qt_setup.cpp:28:Qt library not found

12 декабря 2018
 

 При запуске emulator (см. Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль) — возникает ошибка qt_setup.cpp:28:Qt library not found: [139824804910912]:ERROR:android/android-emu/android/qt/qt_setup.cpp:28:Qt library not found at ../emulator/lib64/qt/lib Could not launch ‘/home/projectname/projectname/../emulator/qemu/linux-x86_64/qemu-system-i386’: No such file or directory Девайс запускается из Jenkins-джобы: node(‘android’) { stage(‘Run UI tests’) { ws(‘/home/projectname/projectname’) { sh ‘/usr/local/bin/appium -p 4723 —session-override… Читать далее »

DNS: dnsmasq и порядок разрешения домён из resolv.conf

11 декабря 2018
 

 Имеется AWS EC2 инстанс, на котором запущен dnsmasq. Имеется AWS RDS-инстанс, для которого разрешён публичный доступ, и у домена которого, соответственно, есть два IP — публичный, если запрашивать публичные DNS, и приватный, который отдаётся DNS самого Amazon, с DNS VPC, в котором запущены инстансы. См начало поста AWS: php_network_getaddresses: getaddrinfo failed: Temporary failure in name resolution… Читать далее »

Linux: «unprivileged users with UID > INT_MAX can successfully execute any systemctl command»

6 декабря 2018
 

 Интересная бага сегодня была опубликована в Twitter и Github. Кратко — если у пользователя UID больше, чем INT_MAX в системе — он может выполнять любые операции systemctl. Справдливости ради — это бага не у systemd, а у polkit. Проверям значение INT_MAX: [simterm] $ cat /usr/include/limits.h | grep INT_MAX # define INT_MIN (-INT_MAX — 1) #… Читать далее »

Appium: Android Virtual Device, Original error: Condition unmet after 60159 ms и костыль

6 декабря 2018
 

 Проблема: UI-тесты, запускаемые с помощью Appium, падают. Задача: найти причину, и пофиксить. Что бы воспроизвести проблему —  установили Android Studio на рабочую машинку и создали устройство. Теперь — можно настроить «тестовый тест», а потом попробовать запустить наши реальные тесты. Забегая наперёд — проблема была найдена, но решения не нашёл, потому пришлось костылить в Jenkins-джобе. Сама проблема на… Читать далее »

RabbitMQ: примеры rabbitmqctl, rabbitmqadmin и хранение сообщений при рестарте сервера

5 декабря 2018
 

 Задача — запустить RabbitMQ сервер и создать сообщение, но таким образом, что бы оно сохранилось при рестарте сервера. Документация по хранению данных — тут>>>. В частности, в ней указано, что на диск будут сохранены любые типы сообщений, если RabbitMQ начинает особождать память (см. Memory Alarms), но нам требуется, что бы сообщения всегда синхронизировались в базу на… Читать далее »

Golang: struct — структуры в примерах

28 ноября 2018
 

 Структура — это коллекция типизированных полей, т.е. у кождого поля в структуре есть свой тип данных. Создать структуру можно следующим образом: type Example struct { FirstField string SecondField string ThirdField int } Тут у структуры с именем Example есть коллекция полей — поля FirstField и SecondField типа string, и поле ThirdField типа integer. Если различные поля имеют одинаковый… Читать далее »