Jump to content

solaris_k

Members
  • Content Count

    1
  • Joined

  • Last visited

  1. Добрый день! Расскажу предысторию. В развиваемом мной проекте есть клиент, написан на GCC и крутится под Debian8. Общается с MySQL посредством коннектора libmysqlclient.so. Долгое время клиент и БД жили в пределах одного сервера, и все было нормально, за исключением того, что клиент отжирал ресурсы у MySQL. Привело к тому, что их разделяем по разным компам, для чего приобрели соответствующий сервер. Соединил я их напрямую 1Гбит пачкордом. Проблема в том, что теперь, стали выстреливать ошибки типа lost connection to mysql server at 'reading authorization packet' system error 104 lost connection to mysql server at 'reading authorization packet' system error 0, чего на общем localhost-е не наблюдалось. Клиент устанавливает с базой от 130 до 200 соединений в секунду, после завершения запроса их разрывая. Ошибка выстреливает с частотой ~~2-20 раз на 10 000 000 запросов. При этом на обеих сторонах происходит подтормаживание сети, причем НА ДРУГИХ ИНТЕРФЕЙСАХ, не на тех, на которых общаются сервера, поскольку на каждом из них есть eth0 и eth1, по eth0 они соединены друг с другом, через eth1 производится связь с внешним миром. Пока что полазил осторожно в sysctl-ах, повысил общую емкость буферов относящихся к сети, и памяти отводимой под сокеты, поскольку внешне похоже, на израсходование общей квоты памяти для буферов. Результат нечеткий, как будто глючить стало меньше, но совсем не ушло. Подскажите пожалуйста, как расследовать данную ситуацию??? Что инструментально отнаблюдать, и как? Верно ли предположение что узким местом может оказаться медный гигабитный PHY- уровень? На этапе разработки верилось с трудом. Закостылить конечно пришлось, теперь прога не допускает никаких фатальных гадостей при получении ошибки соединения, повторно его устанавливает, и повторно все работает. Но ведь ошибка соединения на расстоянии одного пачкорда, это почти такая же гадость как ошибка чтения с HDD, она не может быть "несущественной".
×
×
  • Create New...