У меня есть файл .jar, представляющий сервер, который получает по TCP изображение в байтах (размером не более 500 КБ) и записывает его в файл. Затем он обрабатывает это изображение и отправляет его через TCP-сокет на сторону клиента.
Я запустил его на своем ноутбуке, и он был очень быстрым. Но когда я установил его на экземпляр m1.large сервера Amazon EC2, я обнаружил, что он очень медленный - примерно в 10 раз медленнее. Это может быть неэффективность алгоритма кода, но на самом деле мой код - это не что иное, как получение изображения (как и любой байтовый файл), запуск алгоритма собела и отправка.
У меня есть следующие вопросы:
1- Это нормальная производительность сервера Amazon EC2 - я прочитал следующие ссылки ссылка1 и ссылка2
2- Даже если код не так эффективен, сервер, наконец, справляется с очень низкой нагрузкой (только один клиент), оправдывает ли «неэффективный» код такую производительность?
3- Мой ноутбук только двухъядерный ... Почему сервер amazon ec2 имеет худшую производительность, чем мой ноутбук? Как это объяснить?
Извините за мое невежество.
Как сказал djangofan, я обнаружил, что серверы AWS работают наравне с физическими серверами. Вы можете попробовать профилировать серверную банку, используя VisualVM (это должно быть довольно просто, если вы подключили рабочий стол к экземпляру Windows).