|
|
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
hi all WI-V2.5.3.26726 Код: sql 1. 2. 3. 4. 5. 6. Далее создаю скрипт, в котором в бесконечном цикле: 1) делается прямое обращение к базе, через select from rdb$database (просто чтобы точно знать, что мы действительно ХОДИМ в базу); 2) делается попытка вставки строки с нарушением ПК, исключение намеренно подавляется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. Затем запускаю isql, коннект по ТСР, с этим скриптом: Код: plaintext Жду примерно 2-3 минуты, после чего срубаю isql клавишей Ctrl-C. Далее жду еще 30 минут, наивно надеясь, что ФБ прекратит обслуживание вышепоказанного EB. И вижу в итоге, что: 1) ФБ продолжает молотить, как ни в чём не бывало. Ядро загружено на 97-99%. Потребляемая память, хотя и очень медленно, но - растёт(!) 2) трейс показывает бесконечную молотьбу, - но! - в нём виден только проблемный инсерт, а вот обращения к rdb$database - нету! trace.conf.parameters Код: plaintext 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. trace.output.log Код: plaintext 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. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. mon$statements Код: plaintext 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. Код: plaintext 1. Так работают эти параметры в ФБ 2.5 или нет ? Почему ФБ игнорирует факт срубания коннекта, хотя коннект выполняет вообще-то обращение к базе, т.е. это не какой-то вырожденный случай типа while (1=1) do i=1. PS. Параметр KEEPALIVE_PROBES почему-то в регистре ОТСУТСТВУЕТ (хз, может это "по дефолту" так ? :)). Какое значение тогда будет использовано в формуле KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL, приведенной в статье с сайта IBPhoenix ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2014, 18:39:48 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
ТаблоидПараметр KEEPALIVE_PROBES почему-то в регистре ОТСУТСТВУЕТ (хз, может это "по дефолту" так ? :)). Какое значение тогда будет использовано в формуле KEEPALIVE_TIME+ ( KEEPALIVE_PROBES+1)* KEEPALIVE_INTERVAL, приведенной в статье с сайта IBPhoenix ?Этот параметр в виндузе зовётся TcpMaxDataRetransmissions, его дефолт = 5. Я поставил его = 3, перегрузил комп. Коннект делал что по localhost, что с указанием "нормального" адреса 192.168.0.100 - бестолку. Попробовал поставить в Фб-конфиге также DummyPacketInterval = 20 - пофиг, результат одинаковый. Но! Если дать скрипту работать менее 15 сек, то его срубание таки отслеживается сервером. А вот если 45 сек - уже нет. Загадко как бэ... %-/ ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.03.2014, 22:22:10 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
WI-T3.0.0.30855 (SuperClassic): то же самое, ФБ не реагирует на обрубание аттача, если оно произошло позже, чем через ~30 сек с начала выполнения скрипта. Однако, в mon$statements теперь видны *две* записи, причём активным считается только execute block, а сам инсерт, пытающийся вломить дубликат записи, имеет MON$STATE = 0: Код: plaintext 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. К ночи становится всё интереснее и чудесатее... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 00:46:32 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
LI-T3.0.0.30889: проблемы нет, ФБ просёк отруб tcp-коннекта практически мгновенно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 00:52:36 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
давай не будем путаться в терминах. Никакого отстрела коннекта тут нет. Соответственно, TCP-настройки и dummy-интервал тут вообще никаким боком. Ctrl-C это отмена выполнения текущего запроса. а проблема в том, что в ситуации, когда прерывается EXEUTE STATEMENT, ошибка проглатывается WHEN-блоком. В обычных же ситуациях этого не происходит (и не должно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 10:51:30 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
dimitrкогда прерывается EXEUTE STATEMENT, ошибка проглатывается WHEN-блоком. В обычных же ситуациях этого не происходит (и не должно).почему отсутствие реакции на срубание происходит только при условии, что он отработает не менее 30 сек, и только на виндузе ? PS. Проверил на варианте, когда перехватывается более конкретный sqlcode / gdscode Код: sql 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. PS2. Интересная картина видна в ProcessExplorer'e через 40 сек после старта - см аттач. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 11:41:05 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
Таблоидпочему отсутствие реакции на срубание происходит только при условии, что он отработает не менее 30 сек, и только на виндузе ? понятия не имею. Прерывание будет работать, если наткнется на селект и не будет, если на exec stmt. Почему так карта ложится в разрезе до/после 30 сек - ХЗ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:13:18 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
кстати, на 3.0.0.30882 проблема точно также присутствует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:16:42 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
dimitrкстати, на 3.0.0.30882 проблема точно также присутствуетэто ты на LINUX'e проверял ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:27:04 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
да. Измени свой скрипт, чтобы внутри ES был EB с бесконечным циклом - и все, delete from mon$statements (либо ctrl-c) нифига не останавливает скрипт. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:33:24 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
dimitrИзмени свой скрипт, чтобы внутри ES был EB с бесконечным цикломух ты!... до такого я еще не додумкивал... :-))) Однако, такой вот скрипт: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. - срубается "на ура" через delete from mon$attachments. -------------- Кстати, очередная загадко. Когда такой скрипт выполняется, то: Код: plaintext Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. Ну так вот: если выполнить теперь Код: plaintext 1. 2. 1) в mon$statements по-прежнему видим эти же два активных стейтмента: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 2) загрузка ЦПУ при вводе delete from mon$stt сразу же падает в ноль, т.е. вроде бы выполнение действительно прекращается. PS. Выполнение вышеприведенного скрипта в ProcessExplorer'e уже НЕ содержало в графике загрузки ЦПУ "красноты", как ранее - см. аттач. Терзает смутное сомнение, что наличие или отсутствие реакции ФБ на срубание как-то связано именно с этой "краснотой"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:55:56 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
Таблоидесли выполнить теперь Код: plaintext 1. 2. 1) в mon$statements по-прежнему видим эти же два активных стейтмента:Забыл добавить: хотя ЦПУ "сбросился" в ноль и по всем признакам видно, что ФБ ничего не делает, коннект НЕ завершается, т.е. он где-то "взвис" внутри бесконечного цикла в ES ( while (1=1) ), но и не делает там ничего! Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 12:59:21 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
dimitrда. Измени свой скрипт, чтобы внутри ES был EB с бесконечным циклом - и все, delete from mon$statements (либо ctrl-c) нифига не останавливает скрипт.delete from mon$ATTACHMENTS имеет тот же эффект: загрузка ЦПУ сразу падает в ноль, но скрипт НЕ возвращает управление в ось. И аттач от него по-прежнему виден в mon$attachments, да и mon$statements такой же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:09:35 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
ты вообще читаешь, что тебе пишут? Какой нафиг delete from mon$attachments , если разговор про mon$statements ? Или ты опять с одной темы на другую перескакиваешь? Куда ты из скрипта выкинул WHEN-блок, прячущий ошибку? В болото, ей богу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:18:29 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
dimitr, приведи свой скрипт, плз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:43:21 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:44:15 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
Хорошо, с when-блоком понятно всё: это он, гад, виноват. Что тогда с этим - оно из другой уже оперы ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:47:11 |
|
||
|
нет реакции ФБ на срубание коннекта, выполняющего в бескон. цикле ошибочный statement
|
|||
|---|---|---|---|
|
#18+
Таблоид, "это" я в тройке не могу воспроизвести, у меня управление возвращается в консоль ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.03.2014, 13:58:58 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38576845&tid=1563836]: |
0ms |
get settings: |
6ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
173ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
76ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 501ms |

| 0 / 0 |
