V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
yuyuyu
V2EX  ›  问与答

[有偿] mysql 偶尔连不上,查询超时

  •  
  •   yuyuyu · 2017-02-13 23:10:20 +08:00 · 1573 次点击
    这是一个创建于 2840 天前的主题,其中的信息可能已经有所发展或是发生改变。

    大部分时间是正常的,但偶尔会出现 mysql 连不上、查询超时的问题,系统是 windows ,可以有偿帮忙解决问题,企鹅 MjEyNTcwNTM0MA==

    11 条回复    2017-02-14 23:01:20 +08:00
    ixiaohei
        1
    ixiaohei  
       2017-02-13 23:43:21 +08:00
    查询超时?这个是慢 sql 么?如果是网络抓包就能分析出来了
    yuyuyu
        2
    yuyuyu  
    OP
       2017-02-13 23:52:04 +08:00
    @ixiaohei 确实有慢 SQL ,已经在优化了,但是慢 SQL 会导致 MYSQL 连接都连接不上吗?另外我也不知道这个慢 SQL 是不是真正的罪魁祸首,因为有可能是其他的慢 SQL 导致了表锁什么的然后才会有后面的慢 SQL ?
    ixiaohei
        3
    ixiaohei  
       2017-02-13 23:57:24 +08:00
    慢 SQL 会导致超时异常。如果是 java 一般是 SQLTimeoutException 这种异常。其他的语言也会类似。看你连接池或者链接超时时间设置的是多少。慢 sql 很好优化的,看执行计划就行,最头痛的就是有时候走索引,有时候不走,这时候建议 hint 。
    yuyuyu
        4
    yuyuyu  
    OP
       2017-02-14 00:02:40 +08:00
    @ixiaohei 我现在直接执行慢 sql 语句又很快,这是慢 SQL 语句:
    # User@Host: root[root] @ [x.x.x.x] Id: 223
    # Query_time: 12.136800 Lock_time: 0.000000 Rows_sent: 1 Rows_examined: 1
    SET timestamp=xxxx;
    SELECT
    `Extent1`.`ID`,
    `Extent1`.`Email`,
    `Extent1`.`Password`,
    `Extent1`.`Start`,
    `Extent1`.`End`,
    `Extent1`.`Register`
    FROM `userinfo` AS `Extent1`
    WHERE `Extent1`.`ID` = 1;
    这是执行计划:
    # id, select_type, table, type, possible_keys, key, key_len, ref, rows, Extra
    '1', 'SIMPLE', 'Extent1', 'const', 'PRIMARY,ID_UNIQUE', 'PRIMARY', '4', 'const', '1', NULL
    yuyuyu
        5
    yuyuyu  
    OP
       2017-02-14 00:52:33 +08:00
    好吧,我有一个表是空的表,一条数据都没有,居然也在慢 SQL 记录里面找到了对这个表的查询有 19 秒……感觉出现这种问题的时候,整个 mysql 所有的表查询都会超时或者很慢很慢……是不是 mysql 哪里配置或者和 windows 有兼容性问题? mysql 版本是 5.6.19 , win2008r2
    yuyuyu
        6
    yuyuyu  
    OP
       2017-02-14 09:50:31 +08:00 via Android
    我愿意支付 1000 元酬劳帮忙解决问题
    ixiaohei
        7
    ixiaohei  
       2017-02-14 19:36:34 +08:00
    建议换 linux 服务器试试。把数据导过来就行了。以前在 windows server 上跑几年的 mysql 也没有出现过问题。估计可能你的应用程序有问题
    yuyuyu
        8
    yuyuyu  
    OP
       2017-02-14 20:33:42 +08:00
    @ixiaohei 就是因为不熟 linux 才弄的 windows ,生产环境 linux 出问题不懂要死人的……不应该是应用程序的问题,我建了一个最简单只包含 select count(0) from xxx 的程序,在服务器上每隔 1 分钟执行一次这条 SQL ,当出现问题的时候,这个应用程序也会报查询超时错误,实在不知道什么原因折腾了很久,所以愿意花钱找人帮忙, 1000 不够就 2000 !
    ixiaohei
        9
    ixiaohei  
       2017-02-14 20:55:40 +08:00
    那我感觉你还是有慢查询了,占用完 cpu 线程了,后面的阻塞超时了?
    yuyuyu
        10
    yuyuyu  
    OP
       2017-02-14 21:17:28 +08:00
    @ixiaohei 我估计也是这样但不知道要怎么查
    ixiaohei
        11
    ixiaohei  
       2017-02-14 23:01:20 +08:00
    建议你监控 mysql 的 cpu , io 这些东西,网上搜 mysql 慢查询,能找到很多解决的方法的。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1095 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 26ms · UTC 23:28 · PVG 07:28 · LAX 15:28 · JFK 18:28
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.