Maison  >  Article  >  cadre php  >  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

藏色散人
藏色散人avant
2020-08-22 13:21:443318parcourir

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;}

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,],
    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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer