Maison > cadre php > Laravel > Enregistrez l'expérience de l'utilisation de Laravel-s pour résister aux robots d'exploration Baidu

Enregistrez l'expérience de l'utilisation de Laravel-s pour résister aux robots d'exploration Baidu

藏色散人
Libérer: 2020-08-22 13:21:44
avant
3430 Les gens l'ont consulté

Ce qui suit est la colonne du didacticiel Laravel pour enregistrer l'expérience d'utilisation de La ravel-s pour résister aux robots d'exploration de Baidu, j'espère que cela sera utile aux amis dans le besoin !

Enregistrez l'expérience de l'utilisation de Laravel-s pour résister aux robots d'exploration Baidu

Qu'est-ce que Laravel-s

LaravelS est un projet de colle pour une intégration rapide de Swoole dans Laravel ou Lumen pour leur offrir de meilleures performances
adresse github

Pourquoi utiliser Laravel-s

Après le lancement de l'applet Baidu, le qps (concurrence) élevé du robot d'exploration Baidu a provoqué le chargement complet du processeur et le crash du serveur. Le serveur a été configuré avec 4 cœurs, 8 Go de mémoire et 5 Mo de haut débit. Que faire à ce moment ?

  • Ajustez les paramètres php-fpm et réglez-le sur statique. Le mode statique a des performances supérieures au mode dynamique. Par exemple, si vous définissez le nombre de processus enfants sur 255 ou même plus, plus le nombre est élevé, plus le niveau de concurrence qu'il supportera sera élevé, mais plus le nombre est élevé, plus il occupera de mémoire. Conclusion, c'est efficace dans une certaine mesure, mais c'est inutile en cas de forte concurrence.

  • Feedback à Baidu pour ajuster la fréquence du robot. Conclusion, attendez une minute, les hémérocalles sont déjà froides, mais il vaut mieux donner son avis.

  • Équilibrage de charge. Laissez les autres serveurs partager la pression. Le principe est qu'il y a suffisamment de serveurs et que le même code doit être déployé, et que l'activité dont les autres serveurs sont initialement responsables ne peut pas être affectée. Ou postulez temporairement pour N serveurs dans un certain cloud, mais vous ne savez pas quand le robot arrivera et quand il partira, ce qui est irréaliste.

  • La prochaine étape est le sujet de l'article, utiliser Laravel-s pour accélérer la réponse http.

Quel effet d'accélération Laravel-s a-t-il eu

Parce qu'il n'y avait pas de statistiques pour toutes les périodes à ce moment-là ? tempsqps La valeur spécifique, il n'y a donc aucun moyen de tirer une conclusion précise. Nous ne pouvons faire que des comparaisons basées sur la charge de la machine avant et après le réglage.

Avant le déploiement, cpu était complètement chargé, et la machine était en panne N fois et était paralysée. Le haut débit externe est plein (5 M) et le processeur tombe immédiatement à 20+ après le déploiement. Après avoir temporairement mis à niveau le haut débit à 15 M, cpu atteint 60% et le haut débit externe est toujours plein (on ne peut que le dire). ce robot d'exploration Baidu est un vrai travail) Ah, vous pouvez obtenir autant de haut débit que vous le souhaitez). En conclusion, cela apporte une amélioration des performances au moins 5 fois supérieure.

Déploiement spécifique

Les pages explorées par le robot ne sont qu'une partie de la page, le projet en ligne n'est donc pas transformé en laravel-s , et ce n’est pas non plus la réalité. Il nous suffit de séparer les pages explorées et de les déployer sur laravel-s séparément.

  • Créez un nouveau projet vide, la logique métier ne traite que la page capturéeapi, le numéro de port du projet est tel que 6501

  • Déployez laravel-s, Test api et ab stress test

  • Le projet en ligne transmettra le chemin de la page explorée par le robot vers le nouveau projet, tel que 127.0.0.1:6501

location ~ ^/v1/test.* {
 proxy_pass http://127.0.0.1:6501;
 proxy_set_header Host $host;}
Copier après la connexion

Quelques points à noter :

  • Dans conf/laravels.php, le nombre de worker activés par défaut est le double du nombre de noyaux dans cpu.

  • laravles s'exécute dans swoole et en mémoire Chaque fois que le code est modifié, laravel-s doit être redémarré.

  • Pour la raison indiquée au point 2, la connexion à la base de données ne peut pas être libérée et laravel doit être activée pour se déconnecter et se reconnecter (>laravle5.1). Ajouter conf/database.phpmysql

    'options'   => [
     // 开启持久连接
     \PDO::ATTR_PERSISTENT => true,],
    Copier après la connexion
    dans la configuration

    Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:learnku.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal