Spring Boot - EOFException при отправке нескольких запросовJAVA

Программисты JAVA общаются здесь
Anonymous
Spring Boot - EOFException при отправке нескольких запросов

Сообщение Anonymous »

Я сталкиваюсь с проблемой с моей веб -службой Spring Boot при отправке нескольких запросов одновременно. Некоторые запросы терпят неудачу, но при отладке они успешно проходят. Intellij Idea
[*] client : postman

При отправке запроса я получаю следующие ошибки в своих журналах:

Код: Выделить всё

2025-03-31 16:22:29.271 DEBUG 16768 --- [nio-8082-exec-1] o.apache.coyote.http11.Http11Processor   : Error parsing HTTP request header
2025-03-31 16:22:29.272 DEBUG 16768 --- [nio-8082-exec-1] o.apache.coyote.http11.Http11Processor   : Error state [CLOSE_CONNECTION_NOW] reported while processing request
< /code>
Stack Trace: < /p>
java.io.EOFException: null
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.fillReadBuffer(NioEndpoint.java:1340) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at org.apache.tomcat.util.net.NioEndpoint$NioSocketWrapper.read(NioEndpoint.java:1227) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at org.apache.coyote.http11.Http11InputBuffer.fill(Http11InputBuffer.java:805) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at org.apache.coyote.http11.Http11InputBuffer.parseRequestLine(Http11InputBuffer.java:360) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:271) ~[tomcat-embed-core-9.0.65.jar:9.0.65]
...
Когда я отправляю несколько запросов одновременно, некоторые из них терпят неудачу, но они проходят при отладте.

Код: Выделить всё

@PostMapping("api/synchro/process")
public ResponseEntity processEntries(@RequestBody List entries) {
try {
for (Synchro entry : entries) {
System.out.println(entry.getId());
synchroService.processSynchroEntry(entry);
}
return ResponseEntity.ok("PROCESSED");
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR)
.body("Error processing entries: " + e.getMessage());
}
}

Метод службы:

Код: Выделить всё

@Transactional
public void processSynchroEntry(Synchro entry) {
String eventType = entry.getEventType().toUpperCase();
String data = entry.getData();
String tableName = entry.getTableName();
switch (eventType) {
case "INSERT" -> this.handleInsert(tableName, data);
case "UPDATE" -> this.handleUpdate(tableName, data);
case "DELETE" -> this.handleDelete(tableName, data);
default -> throw new IllegalArgumentException("Unsupported event type: " + eventType);
}
}

динамическое выполнение запросов вставки:

Код: Выделить всё

protected void handleInsert(String tableName, String data) {
try {
JsonNode dataNode = this.objectMapper.readTree(data);
StringBuilder query = new StringBuilder("INSERT INTO ");
query.append(tableName).append(" (");
MapSqlParameterSource params = new MapSqlParameterSource();
StringBuilder columns = new StringBuilder();
StringBuilder values = new StringBuilder();
Iterator it = dataNode.fields();

while(it.hasNext()) {
Map.Entry field = it.next();
if (columns.length() > 0) {
columns.append(", ");
values.append(", ");
}
columns.append(field.getKey());
values.append(":" + field.getKey());
params.addValue(field.getKey(), field.getValue().asText());
}

query.append(columns).append(") VALUES (").append(values).append(")");
this.namedParameterJdbcTemplate.update(query.toString(), params);
} catch (Exception e) {
throw new RuntimeException("Error processing insert", e);
}
}
< /code>
 Что я попробовал < /strong>: < /p>

 Проверка формат запроса: запросы отправляются правильно через почтальон. во -первых, они добиваются успеха. При отправке их оптом, некоторые сбой.server.tomcat.max-threads=200
server.tomcat.accept-count=100
server.connection-timeout=60000
Вопросы:

Что может вызвать эти эофкспензии при отправке нескольких запросов? /> Любые идеи или предложения были бы очень оценены! < /li>
< /ul>

Подробнее здесь: https://stackoverflow.com/questions/795 ... e-requests

Вернуться в «JAVA»