BSDPORTAL.RU

На этом сайте обсуждаются вопросы использования ОС FreeBSD
 Портал  •  Статьи  •  Форум  •  Wiki  •  Поиск  •  FAQ  •  Обои  •   Официальная документация  •  Новые темы 

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Логирование Socket, чем и как?
СообщениеДобавлено: Вс 06 окт, 2019 11:12 pm 
Не в сети

Зарегистрирован: Вс 06 окт, 2019 10:59 pm
Сообщения: 3
Здравствуйте, уровень знаний очень низкий. Помогите пожалуйста, с методом поиска неисправности. Имеется проблема, которую надо локализовать.
Установлен и запущен прокси(Privoxy), который теряет один конкретный пакет. В логах прокси висит запись о том что запрос обработан и отправлен в систему(write socket), но по факту запрос не уходит в сеть, Снифф сделанный tcpdump с этой машины чётко об этом говорит. Как можно локализовать проблему? Существует какой либо метод логированния, для записи того, что пришло на socket от privoxy?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование Socket, чем и как?
СообщениеДобавлено: Пн 07 окт, 2019 7:36 pm 
Не в сети
Модератор

Зарегистрирован: Сб 11 сен, 2004 6:33 am
Сообщения: 5297
Откуда: Москва
ktrace, dtrace


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование Socket, чем и как?
СообщениеДобавлено: Ср 09 окт, 2019 1:20 pm 
Не в сети

Зарегистрирован: Вс 06 окт, 2019 10:59 pm
Сообщения: 3
спасибо, это то что нужно. Всё-равно нет понимания, что надо логировать. Воспользовался ktrace. Утилита показала, что прокси отработал верно, хотя встроенное логированние у прокси не честное.
проблемное место записанное ktrace по pid privoxy:
Код:
  1000 privoxy  CALL  write(0x7,0x28654960,0xc8)
  1000 privoxy  GIO   fd 7 wrote 200 bytes
       "GET /AccessLevelDictionary/list HTTP/1.1\r
Connection: Keep-Alive\r
Accept-Encoding: gzip\r
Accept-Language: en,*\r
User-Agent: Mozilla/5.0\r
Host: exemple.ru:8080\r
\r
       "
  1000 privoxy  RET   write 200/0xc8
  1000 privoxy  CALL  poll(0xbbbfcbe0,0x2,0x927c0)
  1000 privoxy  RET   poll 1
  1000 privoxy  CALL  poll(0xbbbfb7e0,0x1,0)
  1000 privoxy  RET   poll 1
  1000 privoxy  CALL  recvfrom(0x8,0xbbbfb7ee,0x1,0x2<MSG_PEEK>,0,0)
  1000 privoxy  GIO   fd 8 read 0 bytes
       ""
  1000 privoxy  RET   recvfrom 0
  1000 privoxy  CALL  poll(0xbbbfdf50,0x1,0)
  1000 privoxy  RET   poll 0
  1000 privoxy  CALL  close(0x7)
  1000 privoxy  RET   close 0

Я так понимаю, что прокси корректно отправил данные в 7 сокет.
Во всех остальных случаях после первого CALL poll идёт сразу вызов CALL read с ответом от сервера.
Получается, что ядро потеряло вызов. Что можно заснифить, что бы локализовать проблему?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Логирование Socket, чем и как?
СообщениеДобавлено: Пн 14 окт, 2019 10:51 am 
Не в сети

Зарегистрирован: Вс 06 окт, 2019 10:59 pm
Сообщения: 3
воспользовался truss, которая подписала больше байтиков. Прокси, похоже проигнорировал такой вызов:
poll({ 8/POLLERR|POLLHUP 9/POLLIN },2,600000) = 1 (0x1)
Но делу это не помогло.
Обратил внимание, что последовательность обработки данных в вызовах прокси и tcpdump не совпадают.
А проблема возникает только при загрузке приложения(при одиночном запросе всё в порядке).
Полез разбираться с сетевыми настройками фряхи, которые ни когда не менял.
Дело оказалось в параметре kern.ipc.somaxconn который по умолчанию установлен в 128.
Дело усугубилось тем, что начиная с 10 релиза этот аргумент как бы есть но не виден в системе.
Вместо него надо использовать kern.ipc.soacceptqueue.
В связи с этим вопрос: какими методами можно диффектовать такие проблемы?
Вызовы типа netstat, vmstat не эффективны в поиске проблемы.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Зарегистрированные пользователи: Google [Bot], Google Feedfetcher


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB
Яндекс.Метрика