• [mysqldumpslow 报错] Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.



    mysqldumpslow报错:Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.

    总结:是由于top数目太多了。mysqldumpslow遍历只是来的缘故。

    /usr/local/mysql/bin/mysqldumpslow -s -t 15 /root/db01-102-slow.log 


    1。把r去掉试试,还是报错,參数不识别。

    [root@slave ]# /usr/local/mysql/bin/mysqldumpslow -s -t 15 /root/db01-102-slow.log 
    
    Reading mysql slow query log from 15 /root/db01-102-slow.log
    Can't open 15: 没有那个文件或文件夹 at /usr/local/mysql/bin/mysqldumpslow line 91.
    Count: 22  Time=9.61s (211s)  Lock=0.00s (0s)  Rows=1.0 (22), [dubbo]@2hosts
      select count(*)
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
    
    Count: 177  Time=1.40s (247s)  Lock=0.00s (0s)  Rows=1.0 (177), [dubbo]@2hosts
      select count(*) from user_info
      LEFT JOIN system_region a
      ON province_id =a.region_id
      LEFT JOIN system_region b
      ON city_id = b.region_id
      LEFT JOIN system_region c
      ON district_id = c.region_id
    
    Count: 22  Time=13.20s (290s)  Lock=0.00s (0s)  Rows=10.0 (220), [dubbo]@2hosts
      select 
      coupon_id, coupon_lot.coupon_lot_id, coupon_lot.remark,
      coupon.code,  coupon_lot.coupon_type, coupon.state,
      coupon_lot.ckey, coupon_lot.cvalue, coupon_lot.discount, coupon_lot.type, coupon_lot.channel, 
      coupon_lot.is_reusable, coupon_lot.start_datetime,
      coupon_lot.end_datetime, coupon_lot.create_datetime, coupon.update_datetime ,coupon_lot.department,
      coupon_lot.state as couponLotState, coupon_lot.create_operator,coupon_lot.coupon_category,
      coupon_lot.pdt_code,brand.brand_name,product_category.category_name
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
      group by coupon_lot.coupon_lot_id
      order by coupon_lot.create_datetime DESC
      limit N,N
    
    Count: 8  Time=1.09s (8s)  Lock=0.00s (0s)  Rows=10.0 (80), [dubbo]@2hosts
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      limit N,N
    
    Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
      select sleep(N)
    
    Count: 1  Time=1.13s (1s)  Lock=0.00s (0s)  Rows=10.0 (10), [dubbo]@[xx]
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      , oi.order_sn 
      limit N,N
    
    Count: 5  Time=2.47s (12s)  Lock=0.00s (0s)  Rows=0.0 (0), [dubbo]@2hosts
      select
      user_id, usename, nickname, password, user_group_id, realname, gender, email, mobilephone, 
      birthday, province_id, city_id, district_id, marry, income, remarks, create_datetime, 
      active_state, verityEmail, verityPhone, credit, last_login, last_ip, is_locked, channel, 
      tag, union_partner_uuid, union_user_safekey, is_black, qq, weibo_id, verity_email_key, 
      verity_phone_key, verity_email_datetime, verity_phone_datetime, verity_question, 
      verity_answer, cps_code, cps_time_from, cps_time_to, cps_cookie, first_channel
      from user_info where mobilephone = 'S' and (channel is null or trim(channel) ='S')

    2。查看下mysqldumpslow 使用參数,-s后面须要带參数的。看了西夏at比較合适

    [root@db-master-2 ~]# /usr/local/mysql/bin/mysqldumpslow  --help
    Usage: mysqldumpslow [ OPTS... ] [ LOGS... ]
    
    Parse and summarize the MySQL slow query log. Options are
    
      --verbose    verbose
      --debug      debug
      --help       write this text to standard output
    
      -v           verbose
      -d           debug
      -s ORDER     what to sort by (al, at, ar, c, l, r, t), 'at' is default
                    al: average lock time
                    ar: average rows sent
                    at: average query time
                     c: count
                     l: lock time
                     r: rows sent
                     t: query time  
      -r           reverse the sort order (largest last instead of first)
      -t NUM       just show the top n queries
      -a           don't abstract all numbers to N and strings to 'S'
      -n NUM       abstract numbers with at least n digits within names
      -g PATTERN   grep: only consider stmts that include this string
      -h HOSTNAME  hostname of db server for *-slow.log filename (can be wildcard),
                   default is '*', i.e. match all
      -i NAME      name of server instance (if using mysql.server startup script)
      -l           don't subtract lock time from total time


    3,在mysqldumpslow的-s后面增加 at參数试试:  [root@slave ]# /usr/local/mysql/bin/mysqldumpslow -s at -t 15 /root/db01-102-slow.log 

    [root@db-master-2 ~]# /usr/local/mysql/bin/mysqldumpslow -s at -t 15 /root/db01-102-slow.log 
    Reading mysql slow query log from /root/db01-102-slow.log
    Count: 22  Time=13.20s (290s)  Lock=0.00s (0s)  Rows=10.0 (220), [dubbo]@2hosts
      select 
      coupon_id, coupon_lot.coupon_lot_id, coupon_lot.remark,
      coupon.code,  coupon_lot.coupon_type, coupon.state,
      coupon_lot.ckey, coupon_lot.cvalue, coupon_lot.discount, coupon_lot.type, coupon_lot.channel, 
      coupon_lot.is_reusable, coupon_lot.start_datetime,
      coupon_lot.end_datetime, coupon_lot.create_datetime, coupon.update_datetime ,coupon_lot.department,
      coupon_lot.state as couponLotState, coupon_lot.create_operator,coupon_lot.coupon_category,
      coupon_lot.pdt_code,brand.brand_name,product_category.category_name
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
      group by coupon_lot.coupon_lot_id
      order by coupon_lot.create_datetime DESC
      limit N,N
    
    Count: 22  Time=9.61s (211s)  Lock=0.00s (0s)  Rows=1.0 (22), [dubbo]@2hosts
      select count(*)
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
    
    Count: 5  Time=2.47s (12s)  Lock=0.00s (0s)  Rows=0.0 (0), [dubbo]@2hosts
      select
      user_id, usename, nickname, password, user_group_id, realname, gender, email, mobilephone, 
      birthday, province_id, city_id, district_id, marry, income, remarks, create_datetime, 
      active_state, verityEmail, verityPhone, credit, last_login, last_ip, is_locked, channel, 
      tag, union_partner_uuid, union_user_safekey, is_black, qq, weibo_id, verity_email_key, 
      verity_phone_key, verity_email_datetime, verity_phone_datetime, verity_question, 
      verity_answer, cps_code, cps_time_from, cps_time_to, cps_cookie, first_channel
      from user_info where mobilephone = 'S' and (channel is null or trim(channel) ='S')
    
    Count: 177  Time=1.40s (247s)  Lock=0.00s (0s)  Rows=1.0 (177), [dubbo]@2hosts
      select count(*) from user_info
      LEFT JOIN system_region a
      ON province_id =a.region_id
      LEFT JOIN system_region b
      ON city_id = b.region_id
      LEFT JOIN system_region c
      ON district_id = c.region_id
    
    Count: 1  Time=1.13s (1s)  Lock=0.00s (0s)  Rows=10.0 (10), [dubbo]@[10.10.3.8]
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      , oi.order_sn 
      limit N,N
    
    Count: 8  Time=1.09s (8s)  Lock=0.00s (0s)  Rows=10.0 (80), [dubbo]@2hosts
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      limit N,N
    
    Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
      select sleep(N)
    
    Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.
    看到后面还是报错:Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.

    4。去看看/usr/local/mysql/bin/mysqldumpslow的第161行左右,究竟是在操作什么脚本。

    156 my @sorted = sort { $stmt{$b}->{$opt{s}} <=> $stmt{$a}->{$opt{s}} } keys %stmt;
    157 @sorted = @sorted[0 .. $opt{t}-1] if $opt{t};
    158 @sorted = reverse @sorted         if $opt{r};
    159 
    160 foreach (@sorted) {
    161     my $v = $stmt{$_} || die;
    162     my ($c, $t,$at, $l,$al, $r,$ar) = @{ $v }{qw(c t at l al r ar)};
    163     my @users = keys %{$v->{users}};
    164     my $user  = (@users==1) ? $users[0] : sprintf "%dusers",scalar @users;
    165     my @hosts = keys %{$v->{hosts}};
    166     my $host  = (@hosts==1) ?

    $hosts[0] : sprintf "%dhosts",scalar @hosts; 167 printf "Count: %d Time=%.2fs (%ds) Lock=%.2fs (%ds) Rows=%.1f (%d), $user@$host %s ", 168 $c, $at,$t, $al,$l, $ar,$r, $_; 169 } 170 171 sub usage { 172 my $str= shift;

    看到主要是foreach (@sorted)遍历函数,也就是遍历到chunk 236的时候就died结束了,没有办法往下继续foreach了。由于曾经写过代码,知道报错所在的这一行

     my $v = $stmt{$_} || die;
    是遍历第一句。那么肯定是赋值语句,报错Died。chunk 236肯定是已经遍历到末尾没有数据了,看这个函数没有推断传入的參数是否为null的逻辑。所以当文件数据已经遍历完,可是命令还没有结束,所以继续遍历,遍历null的时候报错,所以进程中止了。解决的方法就是做个限制不要遍历超过原始数据的字符串长度。那么我们再来看运行的命令:

     /usr/local/mysql/bin/mysqldumpslow -s at -t 15 /root/db01-102-slow.log 有 -t 15这一句,那么就是要显示出前15个记录,那么假设我的slow.log统计出来仅仅有12个不到15个,而这里有继续遍历到15的话。那进程肯定会Died。


    所以这里有2个解决方式:

    1 改动/usr/local/mysql/bin/mysqldumpslow里面的源码。加null推断。

    这个过程有些复杂。临时略过吧,期待兴许空了再研究。


    2 改动命令  /usr/local/mysql/bin/mysqldumpslow -s at -t 15 /root/db01-102-slow.log 。把-t 15改动成-t 10或者-t 5试试。

    试了好几次,发现临界点在-t 7上面。例如以下:

    [root@slave~]# /usr/local/mysql/bin/mysqldumpslow -s at -t 8 /root/db01-102-slow.log 
    Reading mysql slow query log from /root/db01-102-slow.log
    Count: 22  Time=13.20s (290s)  Lock=0.00s (0s)  Rows=10.0 (220), [dubbo]@2hosts
      select 
      coupon_id, coupon_lot.coupon_lot_id, coupon_lot.remark,
      coupon.code,  coupon_lot.coupon_type, coupon.state,
      coupon_lot.ckey, coupon_lot.cvalue, coupon_lot.discount, coupon_lot.type, coupon_lot.channel, 
      coupon_lot.is_reusable, coupon_lot.start_datetime,
      coupon_lot.end_datetime, coupon_lot.create_datetime, coupon.update_datetime ,coupon_lot.department,
      coupon_lot.state as couponLotState, coupon_lot.create_operator,coupon_lot.coupon_category,
      coupon_lot.pdt_code,brand.brand_name,product_category.category_name
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
      group by coupon_lot.coupon_lot_id
      order by coupon_lot.create_datetime DESC
      limit N,N
    
    Count: 22  Time=9.61s (211s)  Lock=0.00s (0s)  Rows=1.0 (22), [dubbo]@2hosts
      select count(*)
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
    
    Count: 5  Time=2.47s (12s)  Lock=0.00s (0s)  Rows=0.0 (0), [dubbo]@2hosts
      select
      user_id, usename, nickname, password, user_group_id, realname, gender, email, mobilephone, 
      birthday, province_id, city_id, district_id, marry, income, remarks, create_datetime, 
      active_state, verityEmail, verityPhone, credit, last_login, last_ip, is_locked, channel, 
      tag, union_partner_uuid, union_user_safekey, is_black, qq, weibo_id, verity_email_key, 
      verity_phone_key, verity_email_datetime, verity_phone_datetime, verity_question, 
      verity_answer, cps_code, cps_time_from, cps_time_to, cps_cookie, first_channel
      from user_info where mobilephone = 'S' and (channel is null or trim(channel) ='S')
    
    Count: 177  Time=1.40s (247s)  Lock=0.00s (0s)  Rows=1.0 (177), [xx]@2hosts
      select count(*) from user_info
      LEFT JOIN system_region a
      ON province_id =a.region_id
      LEFT JOIN system_region b
      ON city_id = b.region_id
      LEFT JOIN system_region c
      ON district_id = c.region_id
    
    Count: 1  Time=1.13s (1s)  Lock=0.00s (0s)  Rows=10.0 (10), [xx]@[xxx]
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      , oi.order_sn 
      limit N,N
    
    Count: 8  Time=1.09s (8s)  Lock=0.00s (0s)  Rows=10.0 (80), [xx]@2hosts
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      limit N,N
    
    Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
      select sleep(N)
    
    Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236.
    
    -- 临界点 -t 7
    [root@db-master-2 ~]# /usr/local/mysql/bin/mysqldumpslow -s at -t 7 /root/db01-102-slow.log 
    
    Reading mysql slow query log from /root/db01-102-slow.log
    Count: 22  Time=13.20s (290s)  Lock=0.00s (0s)  Rows=10.0 (220), [xx]@2hosts
      select 
      coupon_id, coupon_lot.coupon_lot_id, coupon_lot.remark,
      coupon.code,  coupon_lot.coupon_type, coupon.state,
      coupon_lot.ckey, coupon_lot.cvalue, coupon_lot.discount, coupon_lot.type, coupon_lot.channel, 
      coupon_lot.is_reusable, coupon_lot.start_datetime,
      coupon_lot.end_datetime, coupon_lot.create_datetime, coupon.update_datetime ,coupon_lot.department,
      coupon_lot.state as couponLotState, coupon_lot.create_operator,coupon_lot.coupon_category,
      coupon_lot.pdt_code,brand.brand_name,product_category.category_name
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
      group by coupon_lot.coupon_lot_id
      order by coupon_lot.create_datetime DESC
      limit N,N
    
    Count: 22  Time=9.61s (211s)  Lock=0.00s (0s)  Rows=1.0 (22), [dubbo]@2hosts
      select count(*)
      from coupon_lot
      left join coupon 
      on coupon.coupon_lot_id = coupon_lot.coupon_lot_id
      LEFT JOIN brand
      ON brand.brand_id=coupon_lot.brand_id
      LEFT JOIN product_category
      on product_category.category_id=coupon_lot.category_id
    
    Count: 5  Time=2.47s (12s)  Lock=0.00s (0s)  Rows=0.0 (0), [xx]@2hosts
      select
      user_id, usename, nickname, password, user_group_id, realname, gender, email, mobilephone, 
      birthday, province_id, city_id, district_id, marry, income, remarks, create_datetime, 
      active_state, verityEmail, verityPhone, credit, last_login, last_ip, is_locked, channel, 
      tag, union_partner_uuid, union_user_safekey, is_black, qq, weibo_id, verity_email_key, 
      verity_phone_key, verity_email_datetime, verity_phone_datetime, verity_question, 
      verity_answer, cps_code, cps_time_from, cps_time_to, cps_cookie, first_channel
      from user_info where mobilephone = 'S' and (channel is null or trim(channel) ='S')
    
    Count: 177  Time=1.40s (247s)  Lock=0.00s (0s)  Rows=1.0 (177), [xx]@2hosts
      select count(*) from user_info
      LEFT JOIN system_region a
      ON province_id =a.region_id
      LEFT JOIN system_region b
      ON city_id = b.region_id
      LEFT JOIN system_region c
      ON district_id = c.region_id
    
    Count: 1  Time=1.13s (1s)  Lock=0.00s (0s)  Rows=10.0 (10), [dubbo]@[xxx]
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      , oi.order_sn 
      limit N,N
    
    Count: 8  Time=1.09s (8s)  Lock=0.00s (0s)  Rows=10.0 (80), [dubbo]@2hosts
      select 
      return_sn,  relating_order_sn, return_from,  oi.order_out_sn ,
      add_time , return_type, 
      return_pay, ui.usename as userName, return_consignee, return_goods_count ,
      return_total_fee, total_paid, 
      return_desc, return_order_status,  return_pay_status ,
      return_shipping_status, order_return.lock_operator, order_return.return_invoice_no
      from order_return  LEFT JOIN   order_info oi
      on order_return.relating_order_sn = oi.order_sn 
      left join user_info ui on oi.user_id = ui.user_id
      left join order_payment on order_payment.order_sn = oi.order_sn
      order by order_return.add_time DESC
      limit N,N
    
    Count: 1  Time=1.00s (1s)  Lock=0.00s (0s)  Rows=1.0 (1), root[root]@localhost
      select sleep(N)
    
    [root@db-master-2 ~]# 
    

    终于总结:
    mysqldumpslow报错:Died at /usr/local/mysql/bin/mysqldumpslow line 161, <> chunk 236. 是由于top数目太多了,mysqldumpslow遍历只是来的缘故。

  • 相关阅读:
    html基础知识整理
    全局变量报错:UnboundLocalError: local variable 'l' referenced before assignment
    python简易版学生管理系统
    L2-024. 部落(并查集)
    python 飞机大战 实例
    Python3没有dict.has_key方法
    python学习-字符串 列表 元祖
    vim产生的.swap文件
    caffe 参数介绍 solver.prototxt
    ReentrantLock 实现原理
  • 原文地址:https://www.cnblogs.com/bhlsheji/p/5272896.html
Copyright © 2020-2023  润新知