当我对MySQL进程进行调整时,我总是一遍又一遍地发现相同的错误:
setsockopt(240, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported) futex(0x87ab944, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x87ab940, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0x87ab260, FUTEX_WAKE_PRIVATE, 1) = 1 select(13, [10 12], NULL, NULL, NULL) = 1 (in [12]) fcntl64(12, F_SETFL, O_RDWR|O_NONBLOCK) = 0 accept(12, {sa_family=AF_FILE, path="\246\32629iE"...}, [2]) = 803 fcntl64(12, F_SETFL, O_RDWR) = 0 getsockname(803, {sa_family=AF_FILE, path="/var/lib/mysql\1"...}, [28]) = 0 fcntl64(803, F_SETFL, O_RDONLY) = 0 fcntl64(803, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(803, F_SETFL, O_RDWR|O_NONBLOCK) = 0 setsockopt(803, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported) futex(0x87ab944, FUTEX_WAKE_OP_PRIVATE, 1, 1, 0x87ab940, {FUTEX_OP_SET, 0, FUTEX_OP_CMP_GT, 1}) = 1 futex(0x87ab260, FUTEX_WAKE_PRIVATE, 1) = 1 select(13, [10 12], NULL, NULL, NULL) = 1 (in [12]) fcntl64(12, F_SETFL, O_RDWR|O_NONBLOCK) = 0 accept(12, {sa_family=AF_FILE, path="\246\32629iE"...}, [2]) = 240 fcntl64(12, F_SETFL, O_RDWR) = 0 getsockname(240, {sa_family=AF_FILE, path="/var/lib/mysql\1"...}, [28]) = 0 fcntl64(240, F_SETFL, O_RDONLY) = 0 fcntl64(240, F_GETFL) = 0x2 (flags O_RDWR) fcntl64(240, F_SETFL, O_RDWR|O_NONBLOCK) = 0 setsockopt(240, SOL_IP, IP_TOS, [8], 4) = -1 EOPNOTSUPP (Operation not supported)
当我查找运行mysql进程时,我没有看到任何exception。
我想这可能是在我的代码中的某个地方,所以我修改.htaccess吐出一个502错误,以防止它加载任何东西。 错误仍然显示,只是不太经常。
已经有不less讨论这个错误的线索,但对于如何解决这个问题却没有真正的答案。
my.conf,根据请求:
[mysqld] #skip-networking #log-slow-queries #safe-show-database #local-infile = 0 log-slow-queries = /var/log/mysql-slow.log max_connections = 200 query_cache_limit = 128643200 key_buffer_size = 1200144000 low_priority_updates = 1 concurrent_insert = 2 thread_cache_size = 7 query_cache_size = 662144000 table_cache = 1600 table_definition_cache = 1024 long_query_time = 2.5 open_files_limit = 2647 max_connect_errors=999999999
这是我原来的假设,你发布这个,因为它是导致完全失败。 现在了解这不是一个失败,我要解释为什么这是好的。
正如David所说的,IP_TOS是为设置服务质量提供的服务types的调用。 本地连接(你的my.cnf显示你必须使用)不支持。
在C编写代码时,系统调用几乎总是在成功时返回0,或者通常映射为常量 。 接收到这样的错误代码并不意味着发生了故障。 例如,我可以通过调用stat来快速检查文件,如果在那里,我会得到一定的结果。 如果它不存在或目录权限不让我看到上市,我会得到一个错误代码。 这并不意味着我的应用程序失败。 我的意思是说这个文件是否存在,是我对代码的解释。
同样,MySQL本身并没有失败,因为它捕获了一个代码。 它不经历一个检查各种事情的过程,它只是设置TOS并忘记它。 MySQL不关心,如果这不起作用,甚至可能不抓住国旗。 执行部门检查我们是否可以检查它是否工作是不值得的。
因此,由于这不是终极的,并且不是在重新启动的过程中几次重试的结果,它不是任何问题的一部分。
我暗示你的问题没有任何回报,并期待诊断MySQL中的一些错误。 当你发布一个问题时,你应该解释什么是错的。 当你通过debugging步骤,而你不说为什么,我认为你所显示的是事情的死亡。 看来你从一无所成。 我build议你开始一个新的问题,并告诉我们你为什么在这里,你试图治愈的实际问题是什么,而不是你已经明确的症状。
这是所有正常的连接接受行为。 什么都没有表示问题。 如果仔细观察,您会看到服务器调用select来找出要执行的操作,发现它可以accept的连接并执行此操作。
对于它接受的每个连接,它都会经历一个configuration过程,包括设置非阻塞连接。 它试图做的事情之一是设置QoS参数。 由于此协议不支持QoS(这些都是本地连接),因此这会失败。 所以它继续下去,做其他事情。
如果你遇到了某种问题,你的问题不知道是什么。