服務器後臺報錯:
InterfaceError: 2013: Lost connection to MySQL server during query
具體信息如下:
File "./sr/web/source/manage.py", line 399, in get_tance_users
return MysqlConn().select(sql)
File "./src/lib/mysqlconn.py", line 90, in select
data = cursor.fetchall()
File "/usr/local/lib/python2.7/site-packages/mysql/connector/cursor.py", line 1174, in fetchall
(rows, eof) = self._connection.get_rows()
File "/usr/local/lib/python2.7/site-packages/mysql/connector/connection.py", line 671, in get_rows
rows = self._protocol.read_text_result(self._socket, count)
File "/usr/local/lib/python2.7/site-packages/mysql/connector/protocol.py", line 309, in read_text_result
packet = sock.recv()
File "/usr/local/lib/python2.7/site-packages/mysql/connector/network.py", line 226, in recv_plain
raise errors.InterfaceError(errno=2013)
InterfaceError: 2013: Lost connection to MySQL server during query
單看錯誤信息,認爲是應用在讀mysql的時候,使用了一個無效的鏈接,然後在mysql端kill掉了一些佔時間比較長的鏈接,但是問題依然存在,那麼在細看一眼錯誤:在查詢的過程中,對mysql建立的鏈接丟失了,那麼是這什麼原因導致的呢?
查詢量太大了
後來,將這條sql那到mysql裏執行了一下,確實這次查詢一共掃描了3億條數據,返回了1萬條數據,就是因爲掃描和返回的數據量大導致的,後來程序改成了分頁來解決這個問題了,好的產品邏輯設計很重要!