Kom ihåg mig?
Home Menu

Menu


Söker feedback för DomainStats.io

 
 
Ämnesverktyg Visningsalternativ
Gammal 2016-02-15, 12:51 #1
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
nosnaj nosnaj är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: Mar 2005
Inlägg: 1 012
Citat:
Ursprungligen postat av Jim_Westergren Visa inlägg
Jag crawlar numera mer av webben och sparar länkar som jag visar i Domainstats.
Just nu har jag sparat 259 miljoner länkar och jag sparar ca 5 miljoner mer per dag.
Jag sparar endast länkar utan nofollow och på sidor från startsidor eller undersida 1 nivå från startsidan.
Denna data visas nu i Domainstats tillsammans med data om mest använda ankartexter, IP från länkande sajter och TLDs.

Lite framöver vill jag även skapa en egen länkkraft siffra och det är mycket spännande.
Man (läs jag) blir lite nyfiken hur det fungerar tekniskt att crawla och hålla så många sidor färska och uppdaterade. Visst, man kan gå igenom dom en efter en, men det borde ju börja ta sin lilla tid och antar du köra massa saker parallellt?
Kodar du allt inhouse, vad kodas det i osv? En teknisk bloggpost är önskad
nosnaj är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-02-15, 13:08 #2
Jim_Westergrens avatar
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2005
Inlägg: 1 058
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
Jim_Westergrens avatar
 
Reg.datum: May 2005
Inlägg: 1 058
Jag har kodat det själv och det körs på en enskild dedikerad server.
Det är Nginx, APCu, PHP-fpm och MySQL (innodb).
Det är en massa cron job som körs parallellt.

Det är 3 key metrics som jag mäter varje 30 sekund:

MySQL threads connected: över 250 så pausar jag cron-jobben
Server load: över 14 så så pausar jag cron-jobben
Active PHP processes: över 250 så pausar jag cron-jobben

Om mitt system pausar cron-jobben så körs det igång igen så fort alla värden är tillräckligt ok.

Det har varit ett stort arbete att optimera cron-jobben och servern för att crawla i hög kapacitet utan att det påverkar prestanda för resten av systemet. Men det funkar riktigt bra nu faktiskt.
Har även varit en utmaning att lösa uppdelning av databastabellerna med deras index osv.

Har varit mycket bra lärdom. Och gisses vad mycket spam som finns där ute! Det finns vissa sidor som har över 1 miljoner dofollow länkar på en enskild sida till exempel.

Jag kanske har mer tid framöver att skriva mer tekniskt om detta projekt.
Jim_Westergren är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-02-15, 14:50 #3
gregoff gregoff är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2010
Inlägg: 658
gregoff gregoff är inte uppkopplad
Mycket flitig postare
 
Reg.datum: Jun 2010
Inlägg: 658
Citat:
Ursprungligen postat av Jim_Westergren Visa inlägg
Har varit mycket bra lärdom. Och gisses vad mycket spam som finns där ute! Det finns vissa sidor som har över 1 miljoner dofollow länkar på en enskild sida till exempel.

Jag kanske har mer tid framöver att skriva mer tekniskt om detta projekt.
En miljon dofollow-länkar? Borde inte sökmotorspindlar smälla ganska hårt på fingrarna hos dessa webbplatser som gör så? Eller kommer man fortfarande undan med sånna tricks?

Snygg sida förövrigt! Ska bli intressant att följa!
gregoff är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-02-16, 08:55 #4
Jim_Westergrens avatar
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2005
Inlägg: 1 058
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
Jim_Westergrens avatar
 
Reg.datum: May 2005
Inlägg: 1 058
Citat:
Ursprungligen postat av gregoff Visa inlägg
En miljon dofollow-länkar? Borde inte sökmotorspindlar smälla ganska hårt på fingrarna hos dessa webbplatser som gör så? Eller kommer man fortfarande undan med sånna tricks?

Snygg sida förövrigt! Ska bli intressant att följa!
Ja, sökmotorspindlar lär inte gilla sådana sidor.

Här är en del bra info från Moz om deras problem som de stött på:
https://moz.com/blog/mozscape-index-2015

Innan jag startade Domainstats hade jag själv ingen aning hur stor den asiatiska delen av internet var. Jag slösar dock inga resurser alls på den delen i Domainstats.
Jim_Westergren är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-02-16, 10:12 #5
DanielN DanielN är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2011
Inlägg: 330
DanielN DanielN är inte uppkopplad
Flitig postare
 
Reg.datum: Nov 2011
Inlägg: 330
Bra & snabb tjänst och superintressant att läsa Jim! Skriv gärna mer om tjänsten när du har tid.
DanielN är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-05-11, 12:28 #6
Franzen Franzen är inte uppkopplad
Hej, jag är ny här.
 
Reg.datum: May 2016
Inlägg: 1
Franzen Franzen är inte uppkopplad
Hej, jag är ny här.
 
Reg.datum: May 2016
Inlägg: 1
Hej Jim!

Jag gillar den skarpt och använder den frekvent "mot" mina konkurrenter och mig själv

2 saker som jag ser när jag gör en sökning på min sida m3storage.se

En del element uppdateras inte så ofta, varför?

Sen förstår jag inte varför sidan inte visas som indexerad i google, när den är synbar i sökningen?

Tack på förhand!

Mvh.
Nybörjaren..
Franzen är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-05-30, 12:38 #7
Jim_Westergrens avatar
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2005
Inlägg: 1 058
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
Jim_Westergrens avatar
 
Reg.datum: May 2005
Inlägg: 1 058
Hej Franzen och tack.

Citat:
En del element uppdateras inte så ofta, varför?
Ja, jag ska fundera på detta hur jag ska förbättra. Problemet är antalet domäner är så många.

Citat:
Sen förstår jag inte varför sidan inte visas som indexerad i google, när den är synbar i sökningen?
Det är en bugg från Googles API som händer ibland för mindre sajter, ska notera detta och undersöka.
Jim_Westergren är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-05-30, 12:39 #8
Jim_Westergrens avatar
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
 
Reg.datum: May 2005
Inlägg: 1 058
Jim_Westergren Jim_Westergren är inte uppkopplad
Har WN som tidsfördriv
Jim_Westergrens avatar
 
Reg.datum: May 2005
Inlägg: 1 058
Tänkte skriva lite om de senaste äventyren jag haft med Domainstats uteckling. Finns en del som är intresserade av att läsa hur det går. Jag sitter även just nu själv så även kul att dela med sig.

Servern började gå på knäna och jag visste att det var mysql. Load låg konstant på ca 10 och queries köades upp hela tiden, sajten var riktigt seg, och då hade jag ändå stängt av alla cronjobben (datainsamling, crawling). Databasen var en compressed innodb på ca 100 GB. Den största tabellen med länkarna var över 50 GB med ca 550 miljoner rader. Även med perfekta index så hjälpte det inte, alla queries som rörde den tabellen var seg. Snitttiden för Googlebot att hämta URLer blev som värst 18 sekunder.
Det andra stora problemet var att det endast fanns 40 GB kvar innan hårddisken skulle ta slut och jag vet att jag vill ju crawla och spara mycket mer länkar, kanske tiodubbelt så mycket.

Fast besluten att lösa detta så studerade jag en massa andra olika NoSQL databaslösningar och fastnade till slut för mongodb och cassandra. Jag måste välja en av dessa och jag läste väldigt mycket på nätet om dessa 2 lösningar. Jag anlitade även en del personer genom upwork men det gick inte så bra så jag beslöt mig för att fixa det själv istället.

Jag valde till slut cassandra eftersom det finns en hel del fall där startups flyttar från mongodb till cassandra men jag har aldrig stött på någon som gjort det omvända. Cassandra verkar även mycket bättre när det handlar om intensivt med writes vilket det är i mitt fall.

Jag beställde den dedikerade servern #2 (EX51-SSD hos Hetzer) och fick den installerad i samma datacenter. Installation av Cassandra var rätt enkelt förutom lite klydd gällande rätt version av java. Däremot att få PHP drivern installerad var ett jävelskap som tog rätt många timmar att lösa. Installation enligt instruktionerna går inte utan blir konflikt med någon dependency gällande libuv osv ... men jag löste det till slut. Jag hade helst velat ha PHP 7 såklart men det fick jag skippa eftersom det inte gick med drivern.

Jag flyttade sedan ca 3 miljoner filer från server 1 till server 2 med hjälp av tar och rsync (favicons, printscreens och cache-filer) och ändrade om mysql så att php på server 2 kopplar till mysql på server 1. Ändrade sedan om i DNS och det fungerade felfritt i stort sett direkt (förutom en miss att php måste äga filerna och inte root men det var snabbt ändrat).

Nu på server 1 fanns det bara mysql och inget annat. Steg 1 klart. Server 2 hade nu ingen load alls och server 1 gick fortfarande på knäna men det gick minimalt bättre, nåja.

Steg 2: Skriv om PHP så att inga MySQL joins görs mot de stora tabellerna. Cassandra stödjer inte heller joins.
Detta blev klart och load gick ner en hel del. Detta steg gick faktiskt smidigt.

Steg 3 flytta den största tabellen till cassandra. När du skapar tabellen så är det väldigt viktigt att klura ut hur din nyckel ska se och detta var lite knepigt. Här rekommenderar jag att man testar och verkligen är säker innan man tar nästa steg. Mycket bra info här http://stackoverflow.com/a/24953331/1554653. Jag kom fram till 1 primärnyckel med 2 klusternycklar som bästa val för min tabell.

Steg 4, importera data från MySQL till Cassandra. Här skrev jag ett enkelt skript i PHP som loopar och insertar. Till en början gjorde jag ca 4000 inserts per sekund men ökade sedan till ca 12 000 vilka var inga problem alls för Cassandra - flaskhalsen var selecten från mysql. Tänk dock på att 12 000 per sekund = ca 13 timmar non-stop för 550 miljoner rader. Min laptop fick vara igång och köra under natten.

Sista steget var att sedan ändra i PHP så att den data som nu finns i cassandra selectas därifrån och det var faktiskt lätt.

Jag droppade sedan den 50 GB stora tabellen och startade om mysql.

Jag har nu åter aktiverat cron-jobben och load är nu:

server 1 (mysql): 2,4
server 2 (php, cassandra, filer): 0,3

Och snitthämtningstid för Googlebot har gått ner till ca 5 sekunder.

Detta är grymt bra. En annan sak som förvånar mig är att dels är cassandra blixtsnabb och dels så använder den mycket mindre utrymme på disk än vad compressed innodb gjorde - ca hälvten och då har jag ändå replication 1.

Nästa steg är att flytta över andra tabeller från mysql till cassandra men det blir lite svårare och de är inte alls lika stora så det är ett senare projekt.

Jag vill kunna crawla och spara tillräckligt mycket länkar för att kunna skapa min egen länksiffra likt trustflow eller liknande och det känns nu möjligt att kunna göra detta vilket känns jättebra.
Jim_Westergren är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-05-30, 13:12 #9
Nicklas Nicklas är inte uppkopplad
Supermoderator
 
Reg.datum: Mar 2004
Inlägg: 1 662
Nicklas Nicklas är inte uppkopplad
Supermoderator
 
Reg.datum: Mar 2004
Inlägg: 1 662
imponerande, jag brukar testa en del sidor på din tjänst.
Det jag tycker är lite störande är att man måste logga in för att se en del grejer.
__________________
Seo och affiliate sajter som Sko.nu | Möbler | Klocka.com | Ta Lån | Stekpanna | Godis
Nicklas är inte uppkopplad   Svara med citatSvara med citat
Gammal 2016-05-30, 13:28 #10
nim nim är inte uppkopplad
Medlem
 
Reg.datum: Oct 2014
Inlägg: 248
nim nim är inte uppkopplad
Medlem
 
Reg.datum: Oct 2014
Inlägg: 248
Jim:

Av erfarenhet, så är det Index som tar plats i SQL databaser. Hur stor är skillnaden om du enbart väljer datamängder. Cassandra har inte direkt index på samma sätt som SQL så då jämnför du lite äpplen och päron känns det som.
nim är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:17.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017