来自Amazon Ec2实例的响应时间慢

时间:2019-03-24 21:32:28

标签: java http amazon-ec2 tomcat8 okhttp3

我正在运行带有Angular6前端的Java / Spring应用程序。在Spring后端中,我通过http调用了另一个API。但是它的响应速度比预期慢了约6倍...

隔离我得到的API调用:

在我的开发机上本地运行相同的设置(Spring,Tomcat 8.5):10-12秒 通过邮递员本地:10-12秒 通过本地本地链接:10-12秒 在AWS EC2实例上从控制台使用cUrl 10-12sec。

在AWS EC2实例上按预期的方式调用(Spring在Tomcat中运行):60-75sec。

试图将本机Spring http(ResponseEntity postForEntity)调用更改为OkHttp,但结果没有变化。 Api请求和响应是一个很小的Json字符串,但是APi很慢,因此响应时间大约为10秒是正常的。

由于EC2上的Tomcat或Java似乎出了点问题。可以错过一些参数吗?还是我还能尝试找出其他解决方法?

发送和恢复的数据量微不足道(发送约350字节,接收的数据少于该数量)

只是对API的调用需要很长时间。

logger.debug("CallApi start");
        start = System.currentTimeMillis();
        try {

            ObjectMapper mapper = new ObjectMapper();
            String s = mapper.writeValueAsString(apiCalcDTO.getInput());

            OkHttpClient client = new OkHttpClient.Builder()
                    .connectTimeout(120, TimeUnit.SECONDS)
                    .writeTimeout(120, TimeUnit.SECONDS)
                    .readTimeout(120, TimeUnit.SECONDS)
                    .build();


            MediaType mediaType = MediaType.parse("application/x-www-form-urlencoded");
            RequestBody body = RequestBody.create(mediaType, body);
            Request request = new Request.Builder()
                    .url("http://www.example.com/api/1.0/xxx")
                    .post(body)
                    .addHeader("Content-Type", "application/x-www-form-urlencoded")
                    .addHeader("cache-control", "no-cache")
                    .build();

            Response response = client.newCall(request).execute();

            elapsed = System.currentTimeMillis() - start;
            logger.debug("CallApi time = " + elapsed);

0 个答案:

没有答案