• Как тестировать сетевые запросы в Go?

    @falconandy
    Я исользую Docker для запуска сервера. Я запускаю сервер на порте 8081, но Docker перенаправляет запросы на 8081 с порта 8000, куда я могу "дотянуться" из браузера или Postman. Тесты я тоже запускаю в Docker. И сервер и тесты запущены в едином Docker-compose.


    Из контейнера тестов вы должны обращаться к контейнеру сервера не по localhost, а по имени контейнера сервера и по оригинальному порту, на котором висит сервер. Т.е. что-то типа http://server:8081
    Ответ написан
    Комментировать
  • Как правильно настроить pgbouncer и postregsql?

    Melkij
    @Melkij
    PostgreSQL DBA
    max_client_conn в конфиге баунсера - это максимальное число возможных подключений от клиентов к самому баунсеру.
    Если у вас max_client_conn стоит, например, 100, а каждый из 20 бекендов попробует открыть по 10 соединений с баунсером - то первая сотня подключений будет успешна, остальные получат ошибку "no more connections allowed (max_client_conn)"
    max_client_conn ставится в 10000 и про него надолго забываем. Штука фактически бесплатная, libevent хорошо умеет с таким работать. Но требуется выставить корректный open file limit. Каждый коннект - это файловый дескриптор, если не скорректировать настройки ОС - то будет неприятный сюрприз.

    Далее, max_connections базы оставить как есть. Максимум в 100 процессов базы на всего 8 ядер - это и так довольно-таки много, но и урезать смысла нет.
    max_user_connections не трогать если нет причин для этого.

    pool size 20 на всего лишь 8 ядер CPU может быть чрезмерно. Но далее нужно смотреть уже мониторинг. Сколько реальных процессов базы в работе, очередь ожиданий на баунсере, хватает ли баунсеру процессорного времени (тут скользкий момент, баунсер строго однопоточный и может упираться в производительность одного ядра CPU)
    Ответ написан
    2 комментария
  • Есть ли смысл учить Golang если уже хорошо знаешь .NET?

    1. Из коробки компилируется в единственный, сравнительно компактный, бинарь без зависимостей от рантайма и окружения.
    (и без подводных, в отличие от full aot и assembly trimming)

    2. Сможешь рассматривать вакансии, где требуется Golang, если собираешься искать работу.
    3. Сможешь нанимать go-шников со всеми вытекающими, если будешь искать разрабов в свой проект.
    4. Если твой проект должен будет активно взаимодействовать, например, с kubernetes и прочими devops-штуками, то Go может быть чуть удобнее, тк практически все эти инструменты написаны на Go и для работы с ними имеются готовые библиотеки, которые, вероятно, будут лучше, чем их альтернативы для .NET.
    Ответ написан
    3 комментария