Mysql數據庫的壓力

  • rationalError: (2006, 'MySQL server has gone away')

問題描述

使用django+celery時, 運行長時間的任務, 一開始操做一次數據庫, 20個小時後再次操做數據庫.php

過了20多個小時, 再次操做數據庫時報錯.html

raised unexpected: OperationalError(2006, 'MySQL server has gone away') Traceback (most recent call last): File "/usr/local/lib/python2.7/dist-packages/django/db/models/manager.py", line 85, in manager_method return getattr(self.get_queryset(), name)(*args, **kwargs) File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 374, in get num = len(clone) File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 232, in __len__ self._fetch_all() File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 1118, in _fetch_all self._result_cache = list(self._iterable_class(self)) File "/usr/local/lib/python2.7/dist-packages/django/db/models/query.py", line 53, in __iter__ results = compiler.execute_sql(chunked_fetch=self.chunked_fetch) File "/usr/local/lib/python2.7/dist-packages/django/db/models/sql/compiler.py", line 894, in execute_sql raise original_exception OperationalError: (2006, 'MySQL server has gone away')

緣由

鏈接超時

我出現問題就是這個緣由. 
進入mysql,執行下面的命令:前端

mysql> show global variables like '%timeout'; +----------------------------+----------+ | Variable_name | Value | +----------------------------+----------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | innodb_lock_wait_timeout | 50 | | innodb_rollback_on_timeout | OFF | | interactive_timeout | 28800 | | lock_wait_timeout | 31536000 | | net_read_timeout | 30 | | net_write_timeout | 60 | | slave_net_timeout | 3600 | | wait_timeout | 28800 | +----------------------------+----------+

wait_timeout 是28800秒,即mysql連接在無操做28800秒後被自動關閉python

解決方法

當即生效

執行下面的sql命令mysql

mysql> set global wait_timeout=60*60*30;
  • 1

該命令是將wait_timeout設置爲30小時. 
用這種方法,修改完當即生效. 若是重啓mysql, 又恢復原來的28800秒.linux

永久生效

該方法修改完以後, 須要重啓mysql才能生效. 
編輯mysql配置文件my.cnf,添加或修改成下面這條命令. 
(個人mysql配置文件路徑: /etc/mysql/my.cnf )web

wait_timeout = 108000
  • 1

其餘緣由

還有一些其餘緣由, 簡單描述一下 
1: mysql服務關閉 
2: 數據包 過大 
解決方法: 修改 max_allowed_packet 的值, 方法同上.sql

版權聲明:文爲昔日之積累,常忘食廢寢而得,望友傳之時注以源。 https://blog.csdn.net/win_turn/article/details/78196789
我的分類: djangomysql
宿遷90後小夥在家無聊玩微信,存款驚呆父母!鑫迪科技 · 頂新
想對做者說點什麼?  我來講一句
 

從前端到後臺,開發一個完整功能的小程序

 

微信開發 | wanghui_777
新出的微賺錢方式,網友:白玩這麼多年手機了萬達廣場投資 · 頂新

我的資料

原創
98
粉絲
80
喜歡
165
評論
56
等級:
 
訪問:
 
61萬+
積分:
 
4493
排名:
 
8794
勳章:

最新評論

 
相關文章
相關標籤/搜索