Емельянов Эдуард Владимирович (eddy_em) wrote,
Емельянов Эдуард Владимирович
eddy_em

Categories:

Велосипеды-велосипедища!

Знание — сила, а незнание — мощный велосипедогенератор.
За 5 дней опытной эксплуатации демоны, обслуживающие болтвудовский датчик и all-sky почему-то наплодили уйму неотмерших потоков (хотя в коде выход из потока правильный), в результате несчастный кубитрак был загружен на 170%, и компиляция элементарного кода длилась две минуты! Эту проблему решил добавлением перезапуска демонов в cron.daily.
Вчера все это хозяйство разместили на Цейссе (но пока не устанавливали на крыше), включив во время отсутствия электричества (на Цейссе-то упсы, которые не меньше двух часов даже с рабочим телескопом выдержат). В итоге время на кубитраке получилось неправильным. По идее, это должно было устраниться, как только появится сеть — ведь на кубитраке запущен ntp-демон. Как бы не так! Решил опять велосипедно: отменой автозапуска бесполезного ntp-демона и добавления ntpdate в cron.hourly.
Удивился куче логов в /var/log (хотя это одноплатник — он вообще логи в оперативке должен хранить, или даже лучше в /dev/null). Т.к. проблема глубокая, решил ее лишь настройкой logrotate ротировать ежедневно, оставляя по 1 логу.
Ну и вообще, до сих пор негодую, что дебилиан перешел на systemd! Хоть у меня и есть репа генты для кубитрака, собранная в чруте, но очень проблематично обновляться: надо вынимать флешку и перезаливать образ. Что долго и совсем неудобно, когда эта флешка черт-те где. Пришлось вместо генты ставить эту дрянь. Судя по выхлопу systemctl, запущена толпа ненужных сервисов. Что-то поприбивал, но как бороться с автозапуском ненужного wpa_supplicant, не убивая идиотский нетворкманагер, не понимаю. Вообще логика создателей армбиана не ясна для меня: какой идиот на сервер будет пихать нетворкманагер или системД? А уж тем паче, если это — сервер на одноплатнике!

Тьфу! Выпустил пар. Отдохну, а после обеда продолжу накапливать гнев — мне еще на серваке с Scientific Linux (ага, тоже с поцтерошлаком) разворачивать логгирующие демоны и апач с proftpd настраивать… Ну почему наши информатики используют это порождение Красной Шапки? И сами же матюкаются на костыли с поцтерошлаком. Как те мыши с кактусом!

С ntpd вроде как помогли разобраться — если он запущен при активном сетевом соединении, то должен работать. Если соединение неактивно, нужно проверять.
Но вот какого черта потоки плодятся как собаки нерезаные? Сейчас у меня только один слушающий клиент, а на одноплатнике htop показывает 12 (!!!) потоков (кроме двух процессов, которые кажет ps). Как они могли не умереть, если вызываются так (когда клиент коннектится):
if(pthread_create(&handler_thread, NULL, handle_socket, (void*) &newsock))
            WARN("pthread_create()");
        else{
            DBG("Thread created, detouch");
            pthread_detach(handler_thread); // don't care about thread state
        }

А выход по обрыву соединения сделан так:
    close(sock);
    pthread_exit(NULL);
    return NULL;

Сам сокет тоже запускается как поток (чтобы если что случится, переоткрыть), но там его честно ждут:
        if(pthread_kill(sock_thread, 0) == ESRCH){ // died
            WARNX("Sockets thread died");
            pthread_join(sock_thread, NULL);
            if(pthread_create(&sock_thread, NULL, server, (void*) &sock))
                ERR("pthread_create()");
        }

Чудеса в коде-решете!
Tags: велосипедостроение, железяки, негодую, рукожопие
Subscribe

  • И еще ремонты

    Больше месяца назад пыталась жена в очередной раз сдать зеленчукскую квартиру. Но вменяемых желающих не появилось (зато постоянно доставали лица…

  • Опять в генте что-то поломали

    Обновил вчера домашнюю систему. Давно не обновлял: больше 250 пакетов в списке было. А после обновления обнаружил, что в консоли кириллица есть, а в…

  • "Тетрис" и "змейка"

    Дорисовал заглавные буквы в шрифте в 8 пикселей высотой и можно сказать закончил "змейку" (видео) и тетрис (видео). Код на гитхабе. Все-таки,…

promo eddy_em august 17, 2019 12:33 3
Buy for 10 tokens
Юра намедни напечатал корпус для хронометра. Для первого блина получилось неплохо: И еще немного фотографий:
  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic
  • 15 comments

  • И еще ремонты

    Больше месяца назад пыталась жена в очередной раз сдать зеленчукскую квартиру. Но вменяемых желающих не появилось (зато постоянно доставали лица…

  • Опять в генте что-то поломали

    Обновил вчера домашнюю систему. Давно не обновлял: больше 250 пакетов в списке было. А после обновления обнаружил, что в консоли кириллица есть, а в…

  • "Тетрис" и "змейка"

    Дорисовал заглавные буквы в шрифте в 8 пикселей высотой и можно сказать закончил "змейку" (видео) и тетрис (видео). Код на гитхабе. Все-таки,…