webbench测试长连接没有问题,测试短连接出现问题
请问短连接的时候速度为0是为什么?
同样遇到这个问题
@YuyiLin-Oliva @jiajudu web server默认没有keep-alive也主动支持长连接,不会断开,webbench的短连接我没做对应的适配,速度为0是因为卡在了webbench这边
void HttpData::handleConn() { seperateTimer(); uint32_t &events = channel->getEvents(); if (!error_ && connectionState_ == H_CONNECTED) { if (events_ != 0) { int timeout = DEFAULT_EXPIRED_TIME; if (keepAlive_) timeout = DEFAULT_KEEP_ALIVE_TIME; if ((events_ & EPOLLIN) && (events_ & EPOLLOUT)) { events_ = uint32_t(0); events |= EPOLLOUT; } // events |= (EPOLLET | EPOLLONESHOT); events_ |= EPOLLET; loop_->updatePoller(channel_, timeout);
} else if (keepAlive_) {
events_ |= (EPOLLIN | EPOLLET);
// events_ |= (EPOLLIN | EPOLLET | EPOLLONESHOT);
int timeout = DEFAULT_KEEP_ALIVE_TIME;
loop_->updatePoller(channel_, timeout);
} else {
// cout << "close normally" << endl;
// loop_->shutdown(channel_);
// loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this()));
events_ |= (EPOLLIN | EPOLLET);
// events_ |= (EPOLLIN | EPOLLET | EPOLLONESHOT);
int timeout = (DEFAULT_KEEP_ALIVE_TIME >> 1);
loop_->updatePoller(channel_, timeout);
}
} else if (!error_ && connectionState_ == H_DISCONNECTING && (events_ & EPOLLOUT)) { events_ = (EPOLLOUT | EPOLLET); } else { // cout << "close with errors" << endl; loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this())); } }
如果要测短连接,
else {
// cout << "close normally" << endl;
loop_->shutdown(channel_);
loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this()));
}
注释的代码拉回来应该就可以了,试一下哈
@YuyiLin-Oliva @jiajudu
@linyacool 好的,谢谢解答~
void HttpData::handleConn() { seperateTimer(); uint32_t &events = channel->getEvents(); if (!error_ && connectionState_ == H_CONNECTED) { if (events_ != 0) { int timeout = DEFAULT_EXPIRED_TIME; if (keepAlive_) timeout = DEFAULT_KEEP_ALIVE_TIME; if ((events_ & EPOLLIN) && (events_ & EPOLLOUT)) { events_ = uint32_t(0); events |= EPOLLOUT; } // events |= (EPOLLET | EPOLLONESHOT); events_ |= EPOLLET; loop_->updatePoller(channel_, timeout);
} else if (keepAlive_) { events_ |= (EPOLLIN | EPOLLET); // events_ |= (EPOLLIN | EPOLLET | EPOLLONESHOT); int timeout = DEFAULT_KEEP_ALIVE_TIME; loop_->updatePoller(channel_, timeout); } else { // cout << "close normally" << endl; // loop_->shutdown(channel_); // loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this())); events_ |= (EPOLLIN | EPOLLET); // events_ |= (EPOLLIN | EPOLLET | EPOLLONESHOT); int timeout = (DEFAULT_KEEP_ALIVE_TIME >> 1); loop_->updatePoller(channel_, timeout); }} else if (!error_ && connectionState_ == H_DISCONNECTING && (events_ & EPOLLOUT)) { events_ = (EPOLLOUT | EPOLLET); } else { // cout << "close with errors" << endl; loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this())); } }
如果要测短连接,
else { // cout << "close normally" << endl; loop_->shutdown(channel_); loop_->runInLoop(bind(&HttpData::handleClose, shared_from_this())); }注释的代码拉回来应该就可以了,试一下哈
您好我在把注释拉回来后测试短连接时出现段错误,请问这应该怎么解决呢?谢谢
我的长连接只能测1000有结果,大于一千就一直卡在哪没有结果
已收到您的邮件。