У меня есть приложение на рельсы и приложение Sinatra. Приложение Sinatra написано для поиска часового пояса на основе ZIP или IP. Приложение Sinatra использует geoip_city
gem для поиска по IP и имеет собственную базу данных для поиска ZIP. Приложение rails взаимодействует с приложением Sinatra для поиска часовых поясов.
Мы работали над производительностью приложения rails и значительно улучшили его. Мы проверили это с помощью Jmeter, с 1000 потоков, работающих вечно с 60 разгона. Это хорошо работает. Мы также протестировали приложение Sinatra с похожими номерами, и оно работает достаточно хорошо. Однако когда мы тестируем фрагмент, где приложение rails обращается к приложению Sinatra для поиска часового пояса, после периода увеличения мы получаем ошибки тайм-аута. Время ожидания запроса часового пояса, сделанное приложением rails к приложению Sinatra, истекло. Если я уменьшу количество потоков в Jmeter до 100, приложение будет работать нормально.
Интересно, почему это происходит, если приложение rails и приложение Sinatra работают нормально по отдельности? Что снижает производительность, когда рельсы и приложение Sinatra связаны друг с другом? Это так и должно быть?