Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
Столкнулся с такой проблемой: есть приложение на фреймворке 2.0 в виде виндовс-сервиса, которое инициализирует 4 потока: 1 - слушает порт; 2 - с определенным интервалом проверяет сообщения на РОР3 сервере; 3 - с определенным интервалом читает новые задачи из таблицы задач в БД SQL 2005, при поступлении новых задач сканирует папку с длл-ками и запускает метод одной из них для выполнения нужной задачи. 4 - с определенным интервалом читает папку с длл-ками и запускает метод одной из них. Все работало отлично на двухпроцессорном Ксеоне и на большинстве других доступных в поле зрения машинах до тех пор, пока клиент не создал копию приложения и БД на другую машину с одним двухядерным ксеоном: потоки инициализируются, но работают все, кроме третьего потока. По логам видно, что он пытается прочитать информацию о задаче из БД и на этом глохнет. Клиент утверждает, что причина в "улучшенной многопоточности" новой тачки, фреймворк не умеет работать на таком проце... Мне кажется, что что-то намудрил при установке СКЛ или винды их специалист. Помогите разобраться. Клиент очень нервничает :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 04:14 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
.NET Framework вообще не в курсе, какой там процессор и скока там ядер, вернее в курсе, но пользуется он потоками ОС. IMHO, дело в том, что криво установлен MSSQL... ________________________________________________________ Глюк - это высокоорганизованная система не поддающихся определению частиц ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 14:28 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
amids...Помогите разобраться. Клиент очень нервничает :( смахивает на не правильное программирование многопоточных приложений. Скорее всего есть асинхронная фаза, действия в которой подразумеваются синхронные. Тут и едет Ваша логика. Попробуйте выкинуть весь "баласт" и оставить только скелет многопоточности. Поставте слипы эмулирующие различные задержки и посмотрите результат...Можете запостить сюды сам скелет... Уделите внимание синхронным фазам подъёма и опускания каждой из ниток.. Так же не мешает прогнать стрэсс тесты на однопроцессорной машинки. Фрамеворк, как тут правильно сказали, настолько высок от указанных Вами проблем - что вряд ли собака порылась в нём..Хотя ляпов у милкософта было достаочно в первой версии (и ошипка студии "65535" и много чаво ышо)...продукт сырой и допускать его глючность - можно, но вероятность достаточно не высокая... проблемы с сикволом - маловероятны (как мне икается)... Если сработка секьюритей была бы (по поточно она строится) - то она бы не дышала бы у Вас изначально... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 15:14 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
Спасибо за реакцию. Самый большой прикол в том, что приложение работает на ура на всех других машинах, где пробовали его установить. Даже на той, где стоят два таких же процессора, как и на той машине, где не работает. Потоки между собой никаким образом не взаимосвязаны. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 16:59 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
amids..Самый большой прикол в том, что приложение работает на ура на всех других машинах, где пробовали его установить. Даже на той, где стоят два таких же процессора, как и на той машине, где не работает. Потоки между собой никаким образом не взаимосвязаны. 1) обычно разное поведение на разных машинах и(или) при изменении внешних условий работы влияет на не совсем корректно построенный код. это по опыту. скажем так - я бы поставил бы это на первое место по приоритетам "где искать"... 2) не связаны у Вас явно ? А не явно ? Ведь Вы написали, что как минимум 2 потока используют файловый ввод вывод - а это уже пересечение логик. Попробуйте локализовать проблему - закоменнтируйте (или не запускайте) определённые потоки. В потоках попробуйте убрать всё то, что обращаеться к ресурсам или во внешний мир... при этом время жизни потоков постарайтесь оставить такой-же. с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 18:15 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
kolobok0 amids..Самый большой прикол в том, что приложение работает на ура на всех других машинах, где пробовали его установить. Даже на той, где стоят два таких же процессора, как и на той машине, где не работает. Потоки между собой никаким образом не взаимосвязаны. 1) обычно разное поведение на разных машинах и(или) при изменении внешних условий работы влияет на не совсем корректно построенный код. это по опыту. скажем так - я бы поставил бы это на первое место по приоритетам "где искать"... 2) не связаны у Вас явно ? А не явно ? Ведь Вы написали, что как минимум 2 потока используют файловый ввод вывод - а это уже пересечение логик. Попробуйте локализовать проблему - закоменнтируйте (или не запускайте) определённые потоки. В потоках попробуйте убрать всё то, что обращаеться к ресурсам или во внешний мир... при этом время жизни потоков постарайтесь оставить такой-же. с уважением (круглый) Сделал так, как Вы написали: отключил все потоки, кроме проблемного. Вот еще подробности: Поток забирает из БД список задач обычным селектом: Select id from queueMessages where (status='new') and (postTime < @when) где @when - текущее время. Сиквел возвращает таблицу, сервис видит, что записей больше 0 и вызывает метод другого класса, который пытается сделать селект одной из записей Select * from queueMessages where id=40 Запрос поступает на сиквел, но на этом все заканчивается. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 19:15 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
Спасибо всем, проблема была не в процессоре и не в ядрах, а в региональных настройках винды, сиквела и самого фреймворка. Фреймворк получал дату из стрингового поля БД и пытался его пропарсить. Не получалось, так как формат даты не совпадает. Осталось разобраться в региональных настройках самого фреймворка. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2006, 19:54 |
|
||
|
Как работает одно и тоже приложение на разных процессорах
|
|||
|---|---|---|---|
|
#18+
amidsСпасибо всем, проблема была не в процессоре и не в ядрах, а в региональных настройках винды, сиквела и самого фреймворка.... немного в догонку...Вы писали... Код: plaintext 1. где @when - текущее время. Сиквел возвращает таблицу, сервис видит, что записей больше 0 и вызывает метод другого класса, который пытается сделать селект одной из записей Код: plaintext 1. предлагаю проверить путь для оптимизации. а именно объединить эти два запроса. вполне возможно необходимо добавить промежуточный счётчик (для анализа присутствия кол-ва записей больше чем 0).. Может так оказаться - что скорость выборки одного селекта будет выше чем двух (если конечно же логика позволяет)... и ышо... если звёздочка стоит в "боевом" решении - это не есть гуд... с уважением (круглый) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2006, 14:12 |
|
||
|
|

start [/forum/topic.php?fid=16&msg=33806384&tid=1346764]: |
0ms |
get settings: |
10ms |
get forum list: |
18ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
57ms |
get tp. blocked users: |
1ms |
| others: | 266ms |
| total: | 527ms |

| 0 / 0 |
