クローラ作る日記 #3

created: 2017/08/16 02:00 updated: 2017/08/16 02:00

なんやかんや修正を施し、24時間で100万Webページをクロールできるようになった。
以下は収集したWebページが返したServerヘッダの値の集計。

crawling=> select count(*) from web_page_results;
  count
---------
 1000822
(1 row)

crawling=> select substr(server_header, 0, 30), count(*) from web_page_results group by server_header order by count(*) desc limit 30;
         substr          | count
-------------------------+--------
 apache                  | 329479
 nginx                   | 124956
 microsoft-iis/6.0       |  70950
                         |  58895
 apache/2.2.31           |  42070
 microsoft-iis/7.5       |  39406
 apache/2.2.15 (centos)  |  20416
 cloudflare-nginx        |  19155
 apache/2.4.23 (win32)   |  18760
 tengine                 |  14526
 microsoft-iis/8.5       |  13450
 apache/2.2.3 (centos)   |   9930
 nginx/1.11.12           |   9338
 yunjiasu-nginx          |   8427
 openresty               |   7219
 nginx/1.10.2            |   4463
 apache-coyote/1.1       |   3976
 iis                     |   3806
 microsoft-iis/8.0       |   3695
 www server/1.1          |   3679
 nginx/1.12.1            |   3562
 ats                     |   3544
 apache/2.4.7 (ubuntu)   |   3441
 apache/2.2.15 (red hat) |   3436
 microsoft-iis/7.0       |   3337
 plack::handler::starlet |   3241
 nginx/1.0.15            |   2983
 nginx/1.6.2             |   2593
 nginx/1.8.0             |   2551
 nginx/1.10.1            |   2529
(30 rows)

これくらい動作させると、キューとして扱っているPostgreSQLのあるテーブルへのクエリの速度が結構遅くなってくるので、長時間動作させる場合はキューの構成を考え直した方が良さそう。