10.08.2016 16:33 | |
deniska312Пользователь iNETsHOP Количество сообщений 17 Зарегистрирован: 17-05-2016, 23:32:49 |
Ошибка при обмене данными
Доброго времени суток. Имеется проблема с обменом данными между базой сайта. Сайт на CMS Joomla 3 + Virtuemart 3 Суть проблемы в том что при обмене данными на таблице TBL_GOODS на запросе peice->price идет загрузка и обрывается ошибкой [10.08.2016 17:21:19] ERROR(Exception): Сделана попытка выполнить операцию на объекте, не являющемся сокетом. [10.08.2016 17:21:23] ERROR(Exception): Thread http error Что только не пробовал. И изменял количество запросов на поток от 1 до 1000 ставил, ничего не меняет, и кол-во потоков менял от 1 до 5, тоже самое. И пробовал с сервера где стоит программа пробрасывать пакеты на сайт, все без потерь. Пакеты кидал огромных размеров. Из 10000 пробросов 1 потеря. Логи сайта и хостинга ошибок не выдают. Парой по 20-30 раз надо пробовать чтобы прошел обмен. Сайт тоже пробовал нагружать, ничего не виснет и не отрубает. Звонил поставщику хостинга, они говорят что это не на их стороне ошибка При изменении потока и кол0ва запросов ошибка не становится чаще или реже, все остается одинаковым. Выскакивать она может на 20-30% и на 60% и на 95%. Никакого систематизма. Иногда бывает проскакивает обмен на 2 раз. Ночью проходит обмен чаще с 7-8 раза. Уже не знаю куда дальше смотреть, чем проверять. |
10.08.2016 18:00 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Такая ошибка обычно свидетельствует о потере пакетов или когда хост обрывает соединение при обмене через http-тоннель. Таймаут при обмене через http-тоннель равен 600 секунд, т.е. 10 минут, а значит программа не обрывает соединение и ждет ответа сервера пока он обработает отправленный пакет данных, внесет информацию в базу данных сайта и вернет ответ с результатами успешной или не успешной работы. Попробуйте сделать минимальный объем отправляемых данных, например настройте отправку пакетов через http-тоннель на 100 записей базы данных и в 1 поток. Хостинги на базе вебсервера ngnix (если на вашем хостинге он установлен) обычно обрабатывают запросы в от одного IP в одной очереди, а значит не зависимо от того, сколько потоков отправки данных вы установите в настройках, они все-равно будут становится в очередь и обрабатываться по одному. |
10.08.2016 18:10 | |
deniska312Пользователь iNETsHOP
Тема начата
Зарегистрирован: 17-05-2016, 23:32:49 |
Яданные настройки ставил не один раз, все без изменений( Куда еще можно посмотреть или проверить? Может ли mysql не принимать запись и выдавать ошибку? |
10.08.2016 18:17 | |
phantomПользователь iNETsHOP Количество сообщений 11 Зарегистрирован: 23-02-2009, 19:56:48 |
Цитата Написал: deniska312 Яданные настройки ставил не один раз, все без изменений( Куда еще можно посмотреть или проверить? Хостеры редко вникают в проблемы клиентов и пытаются в них разобраться, тем более если вы проверяли потерю пакетов через ping, то там размер пакета грубо говоря 100 байт, а размер пакета с данными программы намного больше да еще он должен распаковаться, преобразоваться и записаться в базу магазина. Как вариант чтобы развеять все сомнения, есть хостеры которые для теста дают VPS или хостинг например на неделю. Возьмите такой хост, бросьте туда базу магазина и скрипты тоннеля (обычно идут отдельной папкой и ни к чему не привязаны) и проверьте обмен. Если результат тот же - пинайте поддержку программы, если проблем не будет - хостера. |
10.08.2016 18:22 | |
deniska312Пользователь iNETsHOP
Тема начата
Зарегистрирован: 17-05-2016, 23:32:49 |
Спасибо) сейчас попробую) |
10.08.2016 18:25 | |
supportSupport Количество сообщений 1199 Зарегистрирован: 11-04-2008, 19:11:57 |
Обмен данными через http-тоннель
Цитата Написал: deniska312 Может ли mysql не принимать запись и выдавать ошибку? При ошибке записи в базу данных mysql или ошибках в sql-скриптах ответ сервера и текст ошибки будут возвращены через http-тоннель и показаны в логах обмена программы. Если возникают ошибки в php-скриптах тоннеля, то они или так же возвращаются через тоннель и/или видны в логах самого веб-сервера который обрабатывает http-запросы. В вашем случае, это выглядит как обрыв соединения на стороне веб-сервера без каких-либо ответов или его недоступность. Нагрузочные тесты обычно запрашивают одну и ту же страницу, которая в последствии отдается из кеша вебсервера и кеша базы дданых. При обмене данными (при передаче данных в базу магазина) кеш не используется, т.к. данные вносятся в базу сайта и всегда разные. Т.е. если бы нагрузочный тест показал проблемы доступности - это бы свидетельствовало о том, что сайт и вебсервер не выдерживает нагрузку, если нагрузочный тест проходит на получение закешированных страниц, это может не давать гарантии что такая же ситуация с POST-запросами http которые еще выполняют интенсивную запись в базу данных сайта. |