В чем может быть причина медлительности (см. Подробности в теле сообщения)?

У меня действительно странная ситуация, которую я бью, чтобы решить. Проблема производительности, которая действительно выглядит как пустая последовательность ожидания, установленная в коде (хотя, вероятно, это не так).

У меня есть довольно мощный выделенный сервер (10 ГБ ОЗУ, восемь ядер Xeon и т. Д.) Под управлением Ubuntu 10.04 со всеми функциональными службами (кроме сервера OpenVPN, используемого для обеспечения безопасного доступа к клиентам), развернутым на отдельных машинах VirtualBox (vboxheadless) (один для почтового сервера компании: один для веб-сервера и один для бухгалтерии / сервера crm (собственный сервер приложений Firebird +, работающий с клиентами Delphi)).

Загрузка процессора (как говорит "верх") почти всегда близка к нулю. Оперативная память хост-системы близка к 100% -ному использованию, но не перегружена (так как используется очень мало подкачки, и освобождается (путем остановки одной из виртуальных машин) память не используется повторно быстро). Примерно 50% гостевой оперативной памяти используется. Iostat обычно показывает около 0% утилит. Пропускная способность сети, кажется, недостаточно используется.

Но бухгалтерский клиент / клиент CRM (приложение Win32 Delphi, работающее на машинах WinXP) работает с этим сервером крайне медленно (и работает намного лучше, используя сервер Windows внутри локальной сети).

Я просто не могу себе представить, что может сделать его медленным, если на клиентских компьютерах и на сервере даже в самые тяжелые моменты будет так много ресурсов ЦП, ОЗУ, жесткого диска и пропускной способности.

Говоря о том, что пропускная способность недоиспользуется, я не только знаю, что клиенты и сервер подключены к Интернету с более широкими каналами, чем реально используются (что оставляет вероятность того, что у них может возникнуть какое-то узкое место на маршруте между ними), я проверил пропускная способность между клиентами и сервером путем копирования файлов между ними.

1 ответ

Я собираюсь догадаться, что бухгалтерское приложение Delphi использует SMB для подключения к серверу. Некоторые типы приложений используют файловые базы данных: Access, Outlook PST, FoxPro, BTrieve и некоторые другие. Обычно они работают ужасно, когда клиент и сервер разделены каналами WAN - даже если это быстрый канал WAN, задержка убивает вас. Это контрастирует с приложениями, которые используют ODBC и драйвер SQL для их внутреннего подключения; те могут справиться лучше с некоторой задержкой.

Тот факт, что вы говорите, что это работает нормально, когда сервер находится в локальной сети, действительно указывает на эту проблему. Таким образом, нет "исправить".

  1. Сохраните это единственное приложение в вашей локальной сети или
  2. Создайте Windows TS в своей размещенной среде, чтобы пользователи могли запускать приложение, но доступ от уровня приложения к уровню БД имеет низкую задержку. или же
  3. Перепишите приложение, возможно, с веб-интерфейсом. Вероятно, не стартер.
Другие вопросы по тегам