|
|
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
А вообще, видимо нужно двигаться в сторону пула соединений. Как вариант, это жор памяти может быть связан с тем, что, как я уже писал, в новом потоке создается соединение, а по завершении потока - уничтожается. А Zeos тянет клиентскую DLL от MySQL. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 12:22 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Вот что нагуглилось: ZeosLib/TConnectionPool https://github.com/delphipascal/zeoslib/blob/master/zeos-7.0.4/src/dbc/ZDbcPooled.pas ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 12:30 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
В смысле, что возможно в Zeos уже есть класс пула соединений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 12:31 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Да, спасибо, буду смотреть. Хотя.... я сам ведь уже писал, что если убрать запрос, и оставить только создание и уничтожение коннекта, то память не расходуется.... прям заколдованный круг какой-то. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 13:10 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Что у вас в той части, которую "убираете"? Только лишь создание датасета, его открытие и уничтожение? Или ещёчто-нибудь? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 21:40 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Вот весь тестовый код: Код: pascal 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. 42. 43. 44. 45. 46. Соответственно, убирал все, что относиться к ZQuery. Но тут выяснилась еще интересная штука. Похоже, я был не совсем прав в отношении того, что память уходит ZQuery. Если сделать один коннект (визуальный, на форме) и к нему цеплять динамически создаваемые ZQuery, то память похоже не теряется. Правда, в таком кривом режиме это все работает на несколько сот строк, потом падает. Но занятая память практически не растет. Похоже, нужно самым серьезным образом подумать про пул соединений. Но про использование ZeosLib/TConnectionPool не нашел вообще ничего! И на западных форумах люди пишут про то же - ничего нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.07.2019, 22:14 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Не понимаю Self в этом коде? Код: pascal 1. Вы же в потоке TThread, или я путаю? Но вообще, в любом случае здесь лучше nil. Так же, вы уверены, что по ходу не вылетает исключение? У вас нет try..except чтобы эио проверить. Но это не так важно, как то, что освобождения лучше упаковать в try..finally. Вдруг в этом причина утечки памяти... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 01:29 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Кроик Семён, Спасибо за помощь! Пробовал и с nil - разницы в данном случае нет. На самом деле вчера поздно вечером сделал try..except и счетчик. За ночь на 79000 вставок всего одна ошибка - какая, не скажу правда. Теперь на всякий случай сделал освобождение в try..finally. Но потребляемая память как росла, так и растет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 07:33 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh, Может попробовать на офф-форуме Zeos это спросить?.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 10:05 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Да, и попробуйте FastMM4. Его надо будет первым в USES'e в .dpr-файле проекта поставить. От FastMM4 много пользы: ускорение программы, лучшая работа с кучей, диагностика утечек памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 10:36 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
подумал... в Delphi с 2006-ой версии итак стоит урезанная версия FastMM4. Но все-равно, попробуйте с полной, вдруг поможет как-нибудь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 11:13 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Форум Zeos попробую конечно, но наши зарубежные коллеги что-то не очень о нем отзываются. Видел там подобное сообщение, что ZQuery жрет память, сошлись что это проблема OC (не понимаю). А про ихний пуд коннектов вообще никто не ответил. Как будто он сам себя написал (этот модуль) Ж-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 12:11 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
А вообще с ADO облом не реальный конечно. Zeos - в отличие от ADO пишет хотя бы. Но память, память.... MySQLDirect - это еще 2005 год. Может еще что-то есть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 12:29 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh> А вообще с ADO облом не реальный конечно. Кто и где делает CoInitFlags:=COINIT_MULTITHREADED? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 12:46 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
/* пока другие не ответят */ вариант 1 готовы выделить 200$ (или 300$ если с исходниками) за MyDAC ? ( https://www.devart.com/mydac/editions.html ) вариант 2 вот попался продукт 2009 года. Может и хватит вам, если заведется конечно. Там и примеры есть, в том числе и многопоточные. Только оформлен не в виде компонентов, а в виде библиотеки функций для доступа к MySQL. mysql.pas ( http://www.audio-data.de/mysql.html ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 12:55 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
P.S. сейчас заметил, mysql.pas (вариант 2) лицензирован Mozilla Public License Version 1.1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 14:03 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
можно попробовать с памятью поискать концы самому, если сильно нужно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 19:40 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
В 2015 году уже искали - и решения не нашли, похоже. http://zeoslib.sourceforge.net/viewtopic.php?t=20838 P.S От отчаяния опять вернулся к ADO. Четыре клиента долбят сервер. Более 20 000 записей уже в базе. Приложение занимает в памяти 17,6 мб, а не 300-500-800 как с Zeos. Что за... Код: pascal 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. 42. 43. 44. 45. 46. 47. 48. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 21:36 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Да, за прямое обращение к визуальному компоненту из потока не ругайте - мы тут более серьезные проблемы ловим ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 22:19 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
AleksVoronezh> Четыре клиента долбят сервер. Более 20 000 записей уже в базе Фигня. Тут и тормозов-то нет. Зачем тебе потоки? ____________ И всё таки, где сидит CoInitFlags := COINIT_MULTITHREADED? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 22:42 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Я полагаю, что приложение само "понимает", что нужно работать в многопоточном режиме, благодаря тому, что в Intraweb, а именно в IWServerController, свойство ComInitialization установлено в "ciMultiThreaded" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 23:29 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
Кстати, я вообще не уверен, что для моего приложения обязателен "многопоточный апартамент", что, по идее, и делает и COINIT_MULTITHREADED, и ComInitialization = "ciMultiThreaded" Вероятно, достаточно и отдельных апартамент на каждый поток. Нужно попробовать с ComInitialization = "ciNormal"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.07.2019, 23:50 |
|
||
|
Опять сбоит ADO в Intraweb с ciMultiThreaded
|
|||
|---|---|---|---|
|
#18+
> Фигня. Тут и тормозов-то нет. Зачем тебе потоки? Извиняюсь, просмотрел сначала. Дело в том, что у меня по сути сервер, обслуживающий в Intraweb GET-запросы в событии TIWServerController.IWServerControllerBaseBeforeDispatch. А тут, как я понимаю, новый поток и стартует. Он же участвует в обработке запросов от клиентов, тех же браузеров. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.07.2019, 00:20 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39837362&tid=2039252]: |
0ms |
get settings: |
5ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
150ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
38ms |
get tp. blocked users: |
1ms |
| others: | 196ms |
| total: | 414ms |

| 0 / 0 |
