Назад | Перейти на главную страницу

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

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

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

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

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

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

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

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

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

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