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

Как оценить лимит обращений к приложению Tomcat?

У нас есть Java-приложение, которое я обслуживаю из Apache 2.2 + mod_proxy_ajp + Tomcat 6, которое представляет собой REST API, и конечные пользователи, как правило, хотят полностью закрыть его как можно быстрее. Я хотел бы иметь возможность ограничивать количество обращений в секунду, в идеале по пользователю / IP-адресу. Например, как Amazon, Twitter и т. Д. Ограничивают количество обращений к своим API.

  1. Желательно в самом Apache или Tomcat, но в ОС (Fedora) все в порядке, хотя я не хочу влиять на другие приложения Tomcat в том же окне (поэтому просто выполнение iptables на порту 80 - не лучшее решение)
  2. Я не хочу ограничивать пропускная способность, это приложение не производит более 1 КБ выходных данных за обращение, а только необработанное число обращений к приложению, чтобы защитить Tomcat от перегрузки.
  3. Я использую Amazon AWS EC2, поэтому мне не нужно использовать несколько IP-адресов на коробку или другие сложные сетевые решения.
  4. Я открыт для решений, которые я могу сказать разработчикам, чтобы они поместили их в свой код, но хотел бы, чтобы это было что-то, что я могу контролировать с точки зрения администратора (например, я могу изменять уровни журнала, используя их файлы конфигурации log4j).

Похоже, что все модули Apache для подобных вещей заброшены и несовместимы с Apache 2.2. Идеи?

Взгляните на mod_limitipconn2, возможно, это то, что вам нужно:

http://dominia.org/djao/limitipconn2.html

Это позволит вам ограничить его одним подключением на IP, эффективно превратив браузер пользователя в синхронное соединение, вместо того, чтобы открывать обычные 4-6 (думает Firefox) по умолчанию.