Spec-Zone .ru
спецификации, руководства, описания, API

5.7.1.13. Сетевые Зонды

Сетевые зонды контролируют передачу информации от сервера MySQL, и клиенты всех заменяет сеть вводом с клавиатуры. Зонды определяются следующим образом:

net-read-start()net-read-done(status, bytes)net-write-start(bytes)net-write-done(status)

Можно использовать сетевые зонды, чтобы контролировать, время потратило чтение из и запись в сетевые клиенты во время выполнения. Следующий сценарий D обеспечивает пример этого. И совокупное время для чтения или записи вычисляется, и число байтов. Отметьте, что динамический переменный размер был увеличен (использование dynvarsize опция) справляться с быстрым увольнением человека зондирует для сетевых чтений/записей.

#!/usr/sbin/dtrace -s#pragma D option quiet#pragma D option dynvarsize=4mdtrace:::BEGIN{   printf("%-2s %-30s %-10s %9s %18s %-s \n",          "St", "Who", "DB", "ConnID", "Dur microsec", "Query");}mysql*:::query-start{   self->query = copyinstr(arg0);   self->who   = strjoin(copyinstr(arg3),strjoin("@",copyinstr(arg4)));   self->db    = copyinstr(arg2);   self->connid = arg1;   self->querystart = timestamp;   self->netwrite = 0;   self->netwritecum = 0;   self->netwritebase = 0;   self->netread = 0;   self->netreadcum = 0;   self->netreadbase = 0;}mysql*:::net-write-start{   self->netwrite += arg0;   self->netwritebase = timestamp;}mysql*:::net-write-done{   self->netwritecum += (timestamp - self->netwritebase);   self->netwritebase = 0;}mysql*:::net-read-start{   self->netreadbase = timestamp;}mysql*:::net-read-done{   self->netread += arg1;   self->netreadcum += (timestamp - self->netreadbase);   self->netreadbase = 0;}mysql*:::query-done{   this->elapsed = (timestamp - self->querystart) /1000000;   printf("%2d %-30s %-10s %9d %18d %s\n",          arg0, self->who, self->db,          self->connid, this->elapsed, self->query);   printf("Net read: %d bytes (%d ms) write: %d bytes (%d ms)\n",               self->netread, (self->netreadcum/1000000),               self->netwrite, (self->netwritecum/1000000));}

Выполняя вышеупомянутый сценарий на машине с удаленным клиентом, можно видеть, что приблизительно одна треть времени, проведенного, выполняя запрос, связывается с обратной записью результатов запроса клиенту.

St Who                            DB            ConnID       Dur microsec Query 0 root@::ffff:192.168.0.108      test              31               3495 select * from t1 limit 1000000Net read: 0 bytes (0 ms) write: 10000075 bytes (1220 ms)