adjust faststack parameter
This commit is contained in:
@ -31,6 +31,9 @@ namespace oceanbase
|
|||||||
{
|
{
|
||||||
namespace common
|
namespace common
|
||||||
{
|
{
|
||||||
|
|
||||||
|
int64_t FASTSTACK_MIN_INTERVAL = 30 * 60 * 1000 * 1000; // 30min
|
||||||
|
|
||||||
static const int SIG_SET[] = {SIGABRT, SIGBUS, SIGFPE, SIGSEGV, SIGURG};
|
static const int SIG_SET[] = {SIGABRT, SIGBUS, SIGFPE, SIGSEGV, SIGURG};
|
||||||
static constexpr char MINICORE_SHELL_PATH[] = "tools/minicore.sh";
|
static constexpr char MINICORE_SHELL_PATH[] = "tools/minicore.sh";
|
||||||
static constexpr char FASTSTACK_SHELL_PATH[] = "tools/callstack.sh";
|
static constexpr char FASTSTACK_SHELL_PATH[] = "tools/callstack.sh";
|
||||||
@ -261,12 +264,11 @@ int minicoredump(int sig, int64_t tid, pid_t& pid)
|
|||||||
|
|
||||||
int faststack()
|
int faststack()
|
||||||
{
|
{
|
||||||
static constexpr int64_t MIN_INTERVAL = 30 * 60 * 1000 * 1000; // 30min
|
|
||||||
static int64_t last_ts = 0;
|
static int64_t last_ts = 0;
|
||||||
int64_t now = ObTimeUtility::fast_current_time();
|
int64_t now = ObTimeUtility::fast_current_time();
|
||||||
int64_t last = ATOMIC_LOAD(&last_ts);
|
int64_t last = ATOMIC_LOAD(&last_ts);
|
||||||
int ret = OB_SUCCESS;
|
int ret = OB_SUCCESS;
|
||||||
if (now - last < MIN_INTERVAL) {
|
if (now - last < FASTSTACK_MIN_INTERVAL) {
|
||||||
ret = OB_EAGAIN;
|
ret = OB_EAGAIN;
|
||||||
} else if (!ATOMIC_BCAS(&last_ts, last, now)) {
|
} else if (!ATOMIC_BCAS(&last_ts, last, now)) {
|
||||||
ret = OB_EAGAIN;
|
ret = OB_EAGAIN;
|
||||||
|
|||||||
@ -66,6 +66,8 @@ using namespace oceanbase::obrpc;
|
|||||||
#define EXPAND_INTERVAL (1 * 1000 * 1000)
|
#define EXPAND_INTERVAL (1 * 1000 * 1000)
|
||||||
#define SHRINK_INTERVAL (1 * 1000 * 1000)
|
#define SHRINK_INTERVAL (1 * 1000 * 1000)
|
||||||
|
|
||||||
|
int64_t FASTSTACK_REQ_QUEUE_SIZE_THRESHOLD = INT64_MAX;
|
||||||
|
|
||||||
extern "C" {
|
extern "C" {
|
||||||
int ob_pthread_create(void **ptr, void *(*start_routine) (void *), void *arg);
|
int ob_pthread_create(void **ptr, void *(*start_routine) (void *), void *arg);
|
||||||
int ob_pthread_tryjoin_np(void *ptr);
|
int ob_pthread_tryjoin_np(void *ptr);
|
||||||
@ -1344,7 +1346,7 @@ int ObTenant::recv_request(ObRequest &req)
|
|||||||
if (OB_SUCC(ret)) {
|
if (OB_SUCC(ret)) {
|
||||||
ObTenantStatEstGuard guard(id_);
|
ObTenantStatEstGuard guard(id_);
|
||||||
EVENT_INC(REQUEST_ENQUEUE_COUNT);
|
EVENT_INC(REQUEST_ENQUEUE_COUNT);
|
||||||
} else if (OB_SIZE_OVERFLOW == ret) {
|
} else if (OB_SIZE_OVERFLOW == ret || req_queue_.size() >= FASTSTACK_REQ_QUEUE_SIZE_THRESHOLD) {
|
||||||
IGNORE_RETURN faststack();
|
IGNORE_RETURN faststack();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user