jedis paramètres de connexion pour la haute performance et fiabilité
Je suis en utilisant des Jedis client pour se connecter à mon serveur Redis. Voici les réglages que j'utilise pour la connexion avec les Jedis (à l'aide d'apache en commun):
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setTestOnBorrow(true);
poolConfig.setTestOnReturn(true);
poolConfig.setMaxIdle(400);
//Tests whether connections are dead during idle periods
poolConfig.setTestWhileIdle(true);
poolConfig.setMaxTotal(400);
//configuring it for some good max value so that timeout don't occur
poolConfig.setMaxWaitMillis(120000);
Jusqu'à présent avec ces paramètres, je ne suis pas face à toutes les questions en termes de fiabilité (je peux toujours me les Jedis de connexion à chaque fois que je veux), mais je vois un certain décalage avec les Jedis performance.
Quelqu'un peut-il me suggérer quelques plus d'optimisation pour atteindre de hautes performances?
Qui est "lent" pour vous? Pourrait être un réseau d'allers-retours que vous pouvez obtenir abaissé si vous utilisez un pipeline ou de scripts lua. Redis est assez rapide, donc il ne devrait pas être. Est de votre piscine définies avec beaucoup de jedis instances? Si un trop grand nombre de composants demander simutanously pour un jedis exemple, il permet de bloquer les tâches comme il n'y a pas assez de ressources pour tous. Pouvez-vous vérifier?
Comment voulez-vous arriver au nombre de 400 ici? Quels sont les avantages et les inconvénients de l'utilisation d'un plus grand nombre? J'utilise redis pour récupérer des données régulières internes à l'aide de jedis. Les utilisateurs qui sont l'appel de la demande ne sera pas uniforme. Parfois, il peut être de 1000 requêtes par secondes et parfois 50. Ce qui devrait être l'idéal MaxTotal? Pour savoir ce que je voulais obtenir les avantages et les inconvénients.
Comment voulez-vous arriver au nombre de 400 ici? Quels sont les avantages et les inconvénients de l'utilisation d'un plus grand nombre? J'utilise redis pour récupérer des données régulières internes à l'aide de jedis. Les utilisateurs qui sont l'appel de la demande ne sera pas uniforme. Parfois, il peut être de 1000 requêtes par secondes et parfois 50. Ce qui devrait être l'idéal MaxTotal? Pour savoir ce que je voulais obtenir les avantages et les inconvénients.
OriginalL'auteur pjain | 2015-03-27
Vous devez vous connecter pour publier un commentaire.
Vous avez 3 essais configuré:
S'il est bon de connaître vos connexions sont encore en vie, ceux onBorrow requêtes PING sont un gaspillage de la RTT avant de votre demande, et les deux autres tests sont gaspiller la précieuse Redis ressources. En théorie, une connexion peut aller mal, même après le test de PING, donc vous devez les attraper une exception de connexion dans votre code et de traiter avec elle, même si vous envoyez une commande PING. Si votre réseau est stable, et vous n'avez pas trop de gouttes, vous devez supprimer ces tests et de gérer ce scénario à l'exception des captures.
Également, par la mise en MaxIdle == MaxTotal, il n'y aura pas d'expulsion de ressources de votre piscine (bon/mauvais?, dépend de votre utilisation). Et lorsque votre piscine est épuisé, une tentative pour obtenir une ressource endup dans délai d'expiration après 2 minutes d'attente pour une ressource gratuite.
Voulais aussi savoir comment jedis piscine gère ses connexions ? Dire Si j'ai mis 100 comme des connexions actives, est-il maintenir tous les 100 active automatiquement les connexions(pour la durée de vie de l'application) ou j'ai besoin de se reconnecter à certaines ressources dans le cas où on va cassé(si jedis.getResource() renvoie l'exception pour ces connexions) ?
"Aussi, par la mise en MaxIdle == MaxTotal, il n'y aura pas d'expulsion de ressources de votre piscine (bon/mauvais?, dépend de votre utilisation). " est mal, je suppose. Même si vous définissez maxidle == MaxTotal il y aura d'expulsion si vous définissez timeBetweenEvictionRunsMillis() > 0.
OriginalL'auteur Ofir Luzon