twitter / twemproxy

A fast, light-weight proxy for memcached and redis
Apache License 2.0
12.16k stars 2.06k forks source link

error logs: NC_ request #672

Open yehaotong opened 2 years ago

yehaotong commented 2 years ago

Hello, twemprodxy reported some error logs: NC request. c: 417 EOF C 249 discarding incomplete req 33270941169 len 4096, but I didn't understand what the error was, and then the error was reported. At the same time, the connection timeout occurred in the program at the same time, and the error occurred in the twoproxy at the same time The connection also fluctuates, so I want to find out where the problem is with the twoproxy.

TysonAndre commented 2 years ago

The request is incomplete. the client closing the connection caused the eof (end-of-file) to be syslogged (At the same time, the connection timeout occurred in the program at the same time)

The fact that the length was exactly 4096 may or may not be related - the client might have fwrite() to send the first 4096 bytes, but not sent the remaining bytes to twemproxy. What client was used?

    if (conn->eof) {
        msg = conn->rmsg;

        /* client sent eof before sending the entire request */
        if (msg != NULL) {
            conn->rmsg = NULL;

            ASSERT(msg->peer == NULL);
            ASSERT(msg->request && !msg->done);

            log_error("eof c %d discarding incomplete req %"PRIu64" len "
                      "%"PRIu32"", conn->sd, msg->id, msg->mlen);

            req_put(msg);
        }
yehaotong commented 2 years ago

Programming language of this application is golang, we use an open lib on github for connecting to twemproxy, and the backend is memcached.

the open lib like is : "github.com/bradfitz/gomemcache/memcache"