sqlite & amp; Windows: недостаточно места для завершения этой операции, и CoInitialize не был вызван

Несколько дней назад я внедрил систему автозаполнения предложений, которая работает со словарем в зависимости от языка. Вот как это работает:
Автозаполнение пользовательского интерфейса JQuery -> вызов файла .php -> вызов функции DLL DLL VB6 -> вызов файла .sqlite и поиск результатов по набранным буквам -> возврат результатов в php -> возврат результатов в JS.

Он работает достаточно быстро, так как в среднем для выполнения каждой операции требуется ~ 7 (миллисекунд). В часы пик аналитика Google показывает ~ 1200 онлайн-пользователей, и обычно каждый день мы получаем ~half a million вызовы этой конкретной функции.

Со дня, когда эта система автозаполнения была запущена, я начал замечать сотни двух очень специфических сообщений об ошибках:

Not enough storage is available to complete this operation.

CoInitialize has not been called.

Некоторая информация, которая может помочь:

а) Эти сообщения появляются в основном во время пика посетителей Гора

б) Они не всегда появляются только с определенной функцией, но и с другими (НО никогда не делали до того, как мы внедрили вышеупомянутую систему)

c) Я использовал базы данных sqlite раньше для других вещей (хотя не столько в режиме реального времени, сколько для возврата результатов, когда пользователь печатает), но никогда такой проблемы не возникало

d) Размер файла sqlite составляет ~ 350 МБ с 3 таблицами, в одной из которых ~ 2,2 миллиона записей, в другой — 1,6 миллиона, а в другой ~ 16 тысяч записей и все необходимые столбцы проиндексированы.

e) Очевидно, эта база данных используется только для чтения.

е) Как только система отключается, все сообщения останавливаются.

ж) Я получаю около тысячи таких сообщений об ошибках каждый день для каждого сообщения (около 500 000 обращений к функции / день)

Серверная система состоит из двух (x2) блоков: Core I7 4770 с тактовой частотой 3,8 ГГц, 32 ГБ ОЗУ, Windows Server 2012 и IIS.

Сообщения появляются случайно и только в часы пик. Я не могу воспроизвести проблему на компьютере разработчика. Поиск в интернете до сих пор был бесплодным. Любые идеи о том, что вызывает это и как решить, будут более чем приветствоваться.

Спасибо.

9

Решение

Тот факт, что это временная проблема, которая возникает только во время пиковых нагрузок, говорит о том, что что-то не хватает памяти — вероятно, ваша VB DLL (это, вероятно, единственное место, где CoInitialize называется).

Я видел похожие проблемы со слишком большим количеством запущенных приложений и winDoze, у которых не хватало «системных дескрипторов» — у меня есть расширенный сервер w2K, который я использовал в качестве настольного компьютера (потому что m $ не предоставляет путь обновления от экземпляра AS до настольного компьютера) обычно с дюжиной окон Explorer, WinSCP с 8-10 вкладками, несколькими сессиями PuTTY, несколькими окнами DOS, подключениями к удаленному рабочему столу, Firefox с 184 вкладками в 4 окнах, Thunderbird отслеживает 40 учетных записей электронной почты, WinAmp и некоторые другие — и PaintShopPro и PhpED просто делают не хотите работать одновременно из-за вышеупомянутого ограничения дескриптора системы.

Ваши проблемы может быть исправить это, просто добавив больше оперативной памяти, но вам, вероятно, следует проверить производительность и проверить настройки системы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]