LDAP C ++ API получить один элемент слишком медленно - PullRequest
0 голосов
/ 13 апреля 2020

Я пытаюсь получить один элемент имени пользователя на сервере LDAP, но мой клиентский код будет тратить 0,6 с, это слишком медленно, я не знаю почему. но 'ldapsearch' и 'LDAP Admin' слишком быстрые, поэтому я думаю, что проблема не в сервере LDAP, кто-нибудь может дать мне некоторую подсказку, почему мой код работает медленно? Спасибо!:)

int main(int argc, char *argv[])
{
        LDAP  *ld;
        char  *dn;
        int   version, rc;

        const char *root_dn = "cn=ldapadm,dc=extreme3,dc=com";
        char *root_pass = "Password123!";

        printf("Connecting %s in port %d...\n\n", HOSTNAME, PORTNUMBER);

        rc = ldap_initialize(&ld, HOSTNAME);
        if ( rc != LDAP_SUCCESS )
        {
            printf("Error !");
        }

        version = LDAP_VERSION3;
        ldap_set_option(ld, LDAP_OPT_PROTOCOL_VERSION, &version);

        printf("Bind!\n");
        rc = ldap_simple_bind_s(ld, root_dn, root_pass);
        if (rc != LDAP_SUCCESS) {
            fprintf(stderr, "Error: %s\n", ldap_err2string(rc));
            return (1);
        }

        LDAPMessage* res = nullptr;
        ldap_search_s(ld, "dc=extreme3,dc=com", LDAP_SCOPE_SUBTREE, "(uid=ncvm9141196u1432)", 0, 0, &res);    //slow at here

        int count = ldap_count_entries(ld, res);
        printf("Result: %d S:\n", count);

        ldap_unbind(ld);
        return(0);
  }

//////////////////////////////////

c4dev@sles15-guol13-dev-00: / c4_working / code> time ./prog
Подключение ldap: //10.109.14.51 в порт 389 ...

Bind!
Результат: 1

реальный 0m0,626s
пользователь 0m0,027s
sys 0m0,000s

...