You are hereBloggar / johan's blog / MySQL skip-name-resolve

MySQL skip-name-resolve


By johan - Posted on 21 april 2010

Att något så litet kan bli så komplicerat. Satt i flera timmar idag och felsökte en MySQL installation åt en kund. Håller på att sätta upp en Drupal sida med tillhörande databas. Vi lade databasen på en egen maskin för att öka prestandan. Så vi tänkte i alla fall.

Det började med långa query- och laddningstider. Efter att ha flyttat servern till en annan plats i nätverket kunde vi minimera query-tiderna. Men vi hade fortfarande oerhörda laddningstider, uppemot 17 sekunder för en sida som normalt bör ta 1 till 1,5 sekund.

Vi hade sedan tidigare några drupal installationer och databas på samma maskin, vilket resulterade i snabba svarstider. Efter lite funderande bestämmde jag mig för att flytta SQL datat till den nya maskinen. Sagt och gjort. Efter en några minuter så laddade jag om sidan. Puhh, sidan som nyss tog 1,5 sekund att ladda tog 16 sekunder. Inget man ville se, men som man nästan kunde räkna ut.

Tänka, tänka, tänka... Hjärnan gick på högvarv. Gjorde lite tester med en SQL klient och även där gick det väldigt trögt. Då kunde vi utesluta Drupal installationen. Efter lite googlande kunde jag hitta personer med samma problem. Långa svarstider för SQL anrop. Det visade sig att för varje anslutning som skapas görs ett DNS uppslag av hosten som försöker göra uppslaget. Om MySQL får hantera många anslutningar, eller om DNS'n är långsam, kan belastningen från ett extra DNS lookup vara jobbigt.

Men jag hade ju precis satt upp min server och hade ingen last alls. Men maskinen som själva Drupalen körs på gör intern-anrop till den nya maskinen. De interna ip-adresserna var inte registrerade i någon DNS. Därav stod anslutningen och hängde medan den försökte göra DNS uppslaget.

Som tur är finns det en parameter i MySQL som man kan ange vid uppstart:

--skip-name-resolve

Så genom att lägga in denna lilla parameter i my.cnf under [mysqld] så hoppas själva DNS uppslaget över. Nu hände det grejer. Sidan som nyss tagit 16 sekunder att ladda, laddades på mindre än 1 sekund. Snacka om skillnad. Att något så litet kan göra en så glad. Så efter några timmars felsökning och ett hallelujah så var det dags för lunch.

Etiketter

Skriv ny kommentar

Innehållet i detta fält är privat och kommer inte att visas publikt.
  • Webbadresser och e-postadresser görs automatiskt till länkar.
  • Tillåtna HTML-taggar: <a> <em> <strong> <cite> <code> <ul> <ol> <li> <dl> <dt> <dd>
  • Rader och stycken bryts automatiskt.

Mer information om formateringsmöjligheter

Mollom CAPTCHA (spela upp ljud för CAPTCHA)
Skriv in bokstäverna som visas i bilden ovan. Om du inte kan läsa dem, skicka formuläret så kommer en ny bild att genereras.