V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
zhenyi2697
V2EX  ›  Python

求助Django的mysql数据库不定时挂掉,找不到原因

  •  
  •   zhenyi2697 · 2013-11-20 23:07:49 +08:00 · 4015 次点击
    这是一个创建于 4022 天前的主题,其中的信息可能已经有所发展或是发生改变。
    大家好,小弟开发了一个基于Django+mysql+bootstrap的网站,网站运行过程中,每当访问量稍微多一点或者网站添加了内容,mysql就会挂掉,然后django会报一个如下的错误:(2002,Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock (111)'.

    详见截图:https://dl.dropboxusercontent.com/u/38395876/Screen%20Shot%202013-10-18%20at%2010.50.46%20PM.png

    如果此时我进入vps,发现mysqld的进程已经停止了。重启之后网站运行就又正常了。

    我查过mysql的log (/var/log/mysql/error.log), 发现只有一个fatal error: cannot allocate memory for the buffer pool.

    我的django项目里装了如下app:

    grapplli,
    robots,
    south,
    social_auth,
    debug_toolbar,

    另外,缓存系统用的是 memcached 和 一个第三方的应用 johnny-cache, 我怀疑是缓存系统和mysql数据库的交互过程中导致错误,然后mysql服务器就挂了,但是具体不知道是哪里出了问题。

    我的django版本: 1.4
    mysql: 5.5.32
    python: 2.7.3
    vps用的是digital ocean

    不知道有没有人碰到过同样的问题。。。
    16 条回复    1970-01-01 08:00:00 +08:00
    ericls
        1
    ericls  
       2013-11-20 23:22:09 +08:00
    这个应该跟django
    没关系吧
    Archangel_SDY
        2
    Archangel_SDY  
       2013-11-20 23:22:37 +08:00
    内存不够?
    ipconfiger
        3
    ipconfiger  
       2013-11-20 23:24:33 +08:00
    最大连接数满了,可能,我猜
    ericls
        4
    ericls  
       2013-11-20 23:38:52 +08:00
    @Archangel_SDY 对 应该是内存不够 可能也不是Mysql的问题 DO最低配置都有512M吧? 不知道楼主的访问量有多少?
    c0878
        5
    c0878  
       2013-11-20 23:47:16 +08:00
    mysql分配的buffer超过内存上限
    ericls
        6
    ericls  
       2013-11-20 23:53:57 +08:00
    @c0878 很有可能哦 试着将buffer调小一点 如果访问量不大的话 如果访问量大 那就换内存大点的服务器
    zhenyi2697
        7
    zhenyi2697  
    OP
       2013-11-21 00:09:19 +08:00
    @ericls
    我的访问量很小的,每天也就几十PV,应该不会内存不够吧。我看了看DO的负载,发现mysql挂掉时disk和banwidth有一个峰值,cpu倒是正常。
    参考截图:https://dl.dropboxusercontent.com/u/38395876/Screen%20Shot%202013-11-20%20at%205.07.32%20PM.png
    zhenyi2697
        8
    zhenyi2697  
    OP
       2013-11-21 00:16:55 +08:00
    @ericls
    多谢, buffer 现在是默认值,128M, 我调小点儿试试,就知道什么时候又会挂。。。
    zhenyi2697
        9
    zhenyi2697  
    OP
       2013-11-21 00:17:36 +08:00
    @c0878
    我刚看了看,buffer size是128M,内存应该有512M,不会超吧
    VYSE
        10
    VYSE  
       2013-11-21 01:25:03 +08:00
    my.cnf里还有其他memory设置吧,加在一起不要超过内存总量80%
    likuku
        11
    likuku  
       2013-11-21 09:21:01 +08:00 via iPhone
    512M内存…my.cnf 直接用small模板那个。假若用innodb,则相关的还要调。
    likexian
        12
    likexian  
       2013-11-21 09:29:54 +08:00
    vps超卖严重,无法分配到内存

    换vps是你唯一的出路
    zhenyi2697
        13
    zhenyi2697  
    OP
       2013-11-21 18:09:32 +08:00
    @VYSE 好的,谢谢
    zhenyi2697
        14
    zhenyi2697  
    OP
       2013-11-21 18:10:31 +08:00
    @likuku 我再改一改试试,或者,我想直接把缓存关了,我觉得就是因为缓存在某一时刻统一写入时,导致内存一下子上升,就支撑不了了。。。
    zhenyi2697
        15
    zhenyi2697  
    OP
       2013-11-21 18:11:43 +08:00
    @likexian
    每天几十个PV都支撑不了啊。。。。升级vps会有用吗?
    找不到这么便宜的vps了啊,个人项目,linode用不起。。。
    likuku
        16
    likuku  
       2013-11-21 23:28:14 +08:00
    这么小点内存,整个架构这么复杂…尽量简单点。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1892 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 30ms · UTC 16:17 · PVG 00:17 · LAX 08:17 · JFK 11:17
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.