gpt4 book ai didi

java - 如何针对 Feed pull 优化 Tomcat

转载 作者:搜寻专家 更新时间:2023-10-30 21:06:15 24 4
gpt4 key购买 nike

我们有一个移动应用程序可以向用户显示提要。 feed REST API 在tomcat 上实现,它并行调用不同的数据源,如Couchbase、MYSQL 来呈现内容。简单代码如下:

Future<List<CardDTO>> pnrFuture = null;
Future<List<CardDTO>> newsFuture = null;

ExecutionContext ec = ExecutionContexts.fromExecutorService(executor);

final List<CardDTO> combinedDTOs = new ArrayList<CardDTO>();

// Array list of futures
List<Future<List<CardDTO>>> futures = new ArrayList<Future<List<CardDTO>>>();

futures.add(future(new PNRFuture(pnrService, userId), ec));
futures.add(future(new NewsFuture(newsService, userId), ec));
futures.add(future(new SettingsFuture(userPreferenceManager, userId), ec));

Future<Iterable<List<CardDTO>>> futuresSequence = sequence(futures, ec);

// combine the cards
Future<List<CardDTO>> futureSum = futuresSequence.map(
new Mapper<Iterable<List<CardDTO>>, List<CardDTO>>() {
@Override
public List<CardDTO> apply(Iterable<List<CardDTO>> allDTOs) {
for (List<CardDTO> cardDTOs : allDTOs) {
if (cardDTOs != null) {
combinedDTOs.addAll(cardDTOs);
}
}

Collections.sort(combinedDTOs);
return combinedDTOs;
}
}
);

Await.result(futureSum, Duration.Inf());
return combinedDTOs;

现在每个请求大约有 4-5 个并行任务。但随着我们在 Feed 中引入新类型的项目,预计将增加到近 20-25 个并行任务。

我的问题是,我该如何改进这个设计?在 Tomcat 中需要什么样的调优才能确保这样的 20-25 个并行调用可以在重负载下得到最佳服务。

我知道这是一个广泛的话题,但任何建议都会非常有帮助。

最佳答案

Tomcat 只管理传入的 HTTP 连接并来回推送字节。没有任何 Tomcat 优化可以让您的应用程序运行得更好。

如果您需要为每个传入的 HTTP 请求运行 25 个并行进程,并且您认为这很疯狂,那么您需要重新考虑您的应用程序的工作方式。

没有任何 tomcat 配置可以帮助解决您在问题中提出的问题。

关于java - 如何针对 Feed pull 优化 Tomcat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35067528/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com