Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Дано: Linux Debian 8.3, gcc-4.9 прога, обменивающаяся с узлами учета по протоколу UDP и складывающая результаты обмена в БД MySQL. использую pthread в минуту примерно 60 дочерних потоков создаются, отрабатывают и завершаются. Проблема: примерно раз в 9 часов выскакивает ошибка при создании очередного потока pthread_create: Дочерний поток пользуется структурой, передаваемой ему основным потоком только для чтения, данные не изменяет, разве что один флаг tmp->live_thread=false;, когда завершается функцией pthread_exit(0);. Подскажите плиз уважаемые профессионалы, куда копать в плане отладки? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 08:02 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Mari.PПодскажите плиз уважаемые профессионалы, куда копать в плане отладки? Ошибку посмотреть для начала. Если проблема тут Код: plaintext 1. 2. То смотреть что в status записалось. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 09:20 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Dima T, Да, спасибо, добавила в код печать кода ошибки в лог. Жду.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 09:25 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Если ошибка очень редко происходит, то есть смысл понавставлять запись в лог во все подозрительные места, чтобы потом можно было понять что предшествовало ошибке. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 09:38 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Скорее всего в какой-то момент потоки подвисают, а новые потоки продолжают создаваться и расходовать ресурсы. А потом заканчивается память или какие-нибудь дескрипторы. Ведите учет кол-ва потоков и печатайте его. 9 часов по 60 потоков в минуту это примерно 32К потоков. Степени двойки это всегда подозрительные числа ))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 11:14 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Mari.Pкуда копать в плане отладки? Утечки памяти и других ресурсов. valgrind в руки. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 11:15 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Dima T, Написала прогу-эмулятор узла учета и запустила со 100 точек одновременно. Через час сервер вылетел на функции Код: plaintext 1. с кодом ошибки 11 (EAGAIN) Вообще ничего не понимаю... Одновременно у меня не более 20 открытых сессий (стоит ограничение) Поток завершается Код: plaintext 1. Или я неправильно завершаю, надо еще в main что-то передавать, чтобы головной поток знал о завершении дочернего? Подскажите плиз уважаемые профессионалы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 11:24 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Не силен в линуксах. Вот что нагуглилось http://stackoverflow.com/questions/8634736/pthread-create-and-eagain Okay, found the answer. Even if pthread_exit or pthread_cancel is called, the parent process still need to call pthread_join to release the pthread ID, which will then become recyclable. Putting a pthread_join(tid, NULL) in the end did the trick. Как понимаю надо pthread_join() для ожидания завершения потока или pthread_detach() чтобы сообщить ОС что ожидания не будет. Добавь pthread_detach() после создания потока. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 11:38 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. мне не нужен, головной поток совсем не ждет завершения дочернего, он принимает пакеты и раскидывает их по дочерним потокам по IP-адресу, или создает новый поток, если IP-адреса нет в списке работающих потоков. В свою очередь дочерний поток спрашивает все, что ему нужно с данного IP и завершается Код: plaintext 1. А вот про Код: plaintext 1. сейчас почитаю. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 11:50 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Да, конечно, надо было так писать, иначе main считает потоки, на зная, что они завершились и прекращает их создавать по достижению числа X. Переделала, запустила на проверку... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 12:17 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Mari.PДа, конечно, надо было так писать, иначе main считает потоки, на зная, что они завершились и прекращает их создавать по достижению числа X. Переделала, запустила на проверку... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Пацаны, вы тоже это видите? Пойду я, пожалуй, борщ варить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.04.2017, 13:27 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
ROLpogoПойду я, пожалуй, борщ варить.я ещё вчера уже котлеты пожарил, постирался и пропылесосил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2017, 05:05 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
ROLpogo, CEMb, вы ошиблись сайтом, ваш форум тут http://forum.domohozyaika.com/ , там как раз есть раздел "о компьютерах"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2017, 11:14 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Mari.P с кодом ошибки 11 (EAGAIN) Вообще ничего не понимаю... Подскажите плиз уважаемые профессионалы. Вобще то это офтопик но для понимания причин нужно видеть в ОС vmstat 1 100 во время возникновения ошибки. С очень большой вероятностью в момент возникновения ошибки 1 и 2 колонки будут равны , или вторая больше первой . Первая колонка никогда не может быть больше количества ядер ( * хипертрединг) В идеально сбалансированной и оттюниной под приложение ОС вторая колонка должна быть равна 0, а числа больше нуля могут появляться при значения меньше 20 в 15 колонке (id) это когда общая нагрузка на все процессоры больше 80%. Из других колонок vmstat с высокой долей вероятности можно будет выяснить причину. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2017, 11:18 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
д0kХ, ответ мне вчера подсказал Dima T , а конкретика здесь: https://www.linux.org.ru/forum/development/6735812 сейчас уже почти сутки все работает без сбоев. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2017, 11:26 |
|
||
|
раз в 9 часов вылетает ошибка.
|
|||
|---|---|---|---|
|
#18+
Mari.Pд0kХ, ответ мне вчера подсказал Dima T , а конкретика здесь: https://www.linux.org.ru/forum/development/6735812 сейчас уже почти сутки все работает без сбоев. А теперь вы можете смотреть в хрустальный шар vmstat и по значениям больше 0 в второй колоне предсказывать скорое появление EAGAIN в вашем приложении ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.04.2017, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=39434080&tid=2018214]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
168ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
50ms |
get tp. blocked users: |
1ms |
| others: | 279ms |
| total: | 541ms |

| 0 / 0 |
