CppCMS サーバーを使用していますが、ポスト メッセージが数 kB の特定のサイズに達すると、ポスト リクエストのパフォーマンスが非常に低下します。これは、わずかに変更された、初心者向けチュートリアルの最小限のサーバーの例で既に発生しています。
#include <cppcms/application.h>
#include <cppcms/applications_pool.h>
#include <cppcms/service.h>
#include <cppcms/http_request.h>
#include <cppcms/http_response.h>
#include <cppcms/mount_point.h>
#include <booster/intrusive_ptr.h>
#include <utility>
#include <iostream>
#include <boost/timer.hpp>
class hello
: public cppcms::application
{
public:
hello(cppcms::service &srv) :
cppcms::application(srv), counter(0) {}
virtual void main(std::string url);
boost::timer my_timer;
int counter;
};
void hello::main(std::string url)
{
response().out() << "Hello from asynchron CppCMS after " << my_timer.elapsed() << "s\n";
std::cout << "[" << url.size() << "] = " << url.substr(0, 50) << '\n';
}
int main(int argc,char ** argv)
{
try {
cppcms::service srv(argc,argv);
booster::intrusive_ptr<hello> p= new hello(srv);
srv.applications_pool().mount( p, cppcms::mount_point("(.*)") );
srv.run();
}
catch(std::exception const &e) {
std::cerr << e.what() << std::endl;
}
return 0;
}
奇妙なことに、サーバーはメイン関数で数ミリ秒しか費やさず、2 つの呼び出しの間に 1 秒または 2 秒しか費やさないということです。
- 現在、CppCMS は何をしているのですか?
- さらに重要なことに、この時間を短縮するにはどうすればよいでしょうか。
- スレッドプールの問題ですか?
- 投稿メッセージの高価な処理はありますか? (圧縮について何か読んだことがあります)それをオフにしたり、加速したりできますか?
8 ~ 10kB の XML ファイルを含む 9 つのポスト リクエストは、リクエストを処理することさえせずに 9 秒かかります。node.js サーバーでは、同じリクエストに 0.5 秒もかかりません。私はさまざまな構成を試し、多くの dox と投稿を読みましたが、これらの長いアイドル時間を説明するものを見つけることができませんでした。どんな助けでも大歓迎です。
前もってありがとう、ピーター