HCL Commerce Version 9.1.13.0

Dépannage : La recherche génère 500 Erreur de serveur interne lorsque FacetPageSize est supérieur à 1000

Lorsqu'un grand nombre d'attributs sont définis comme étant consultables et que la propriété de configuration de composant FacetPageSize est définie sur une valeur supérieure à la valeur par défaut de 1 000, les requêtes de recherche expirent avec une erreur 500 internal server.

Problème

Si vous avez défini un grand nombre d'attributs pour qu'ils soient consultables (par exemple, 5 000 ou plus), l'augmentation de la propriété de configuration de composant FacetPageSize à une valeur élevée telle que 2000, 5000 ou 20000 entraîne un dépassement de délai avec le message Cannot connect to search server. Dans ce cas, la valeur par défaut de 1000 peut continuer à fonctionner, mais il se peut qu'il ne s'agisse pas de la valeur dont vous avez besoin. Un vidage d'erreur plus détaillé affichera un résultat similaire à ce qui suit, où 5 000 attributs sont consultables :
2023-06-08T10:08:06.665Z [Default Executor-thread-11] [7242254821593936814] ERROR c.h.c.s.rest.AbstractSearchResource.executeSearch:500 - Failed to perform search: java.net.SocketTimeoutException: 16,500 milliseconds timeout on connection http-outgoing-0 [ACTIVE] at org.apache.http.nio.protocol.HttpAsyncRequestExecutor.timeout(HttpAsyncRequestExecutor.java:387) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:92) at org.apache.http.impl.nio.client.InternalIODispatch.onTimeout(InternalIODispatch.java:39) at org.apache.http.impl.nio.reactor.AbstractIODispatch.timeout(AbstractIODispatch.java:175) at org.apache.http.impl.nio.reactor.BaseIOReactor.sessionTimedOut(BaseIOReactor.java:261) at org.apache.http.impl.nio.reactor.AbstractIOReactor.timeoutCheck(AbstractIOReactor.java:502) at org.apache.http.impl.nio.reactor.BaseIOReactor.validate(BaseIOReactor.java:211) at org.apache.http.impl.nio.reactor.AbstractIOReactor.execute(AbstractIOReactor.java:280) at org.apache.http.impl.nio.reactor.BaseIOReactor.execute(BaseIOReactor.java:104) at org.apache.http.impl.nio.reactor.AbstractMultiworkerIOReactor$Worker.run(AbstractMultiworkerIOReactor.java:591)

Solution

La recherche s'effectuera avec suffisamment de temps. Vous pouvez retarder le délai d'attente en ajustant la propriété de configuration de composant maxTimeAllowed, comme décrit dans Propriété de configuration des composants. Par exemple, la définition de maxTimeAllowed sur 30000 peut permettre à la recherche de se terminer sans message de délai d'attente, mais avec un délai.