всем привет zver: тут? char *auth_lib; 33 int ret; 34 ret = asprintf(&auth_lib, "%s/libkatrin-auth-%s.so", KATRIN_LIBRARY_PATH, p->value); этот кусок кода мне страшно подозрителен во первых, char *auth_lib - чему она равна? хорошо было бы написать char *auth_lib=NULL; далее вы пишете ret = asprintf(&auth_lib, "%s/libkatrin-auth-%s.so", KATRIN_LIBRARY_PATH, p->value); по-моему, это вообще не обосновано ) лучше выглядит snprintf, имхо в чём логика использования asprintf? только если использовать char **auth_lib конечно, это всё достаточно условно, но тем не менее ещё одно улучшение, которое можно предложить это уменьшение количества операций файлового ввода - вывода проблема, на мой взгляд. вот какая в каждом get_*_cgf, а коих вызывается немало, происходит цепочка вызовов внутри libconfuse что само по себе имхо недостаточно эффективно разве не лучше будет сохранять время последнего изменения и структуру rjyabuf в переменных типа static (в случае локальных переменных внутри ф-ии), а потом при требованиии конфига смотреть время последнего изменения, и либо ничего не делать, либо вызывать ф-ии libconfuse *конфига а второе - такой вопрос в файле libkatrin-auth-db вы подгружате библиотечку, некоторый .so-файлик и так вы делаете при каждой попытке аутентификации в каждом вызове authuser вы снова подгружаете библиотечку мне кажется, подобное поведение, _если_я_все_правильно_понял_, должно сильно снизить производиельность при высоких нагрузках как вы считаете? чем бы я могу заняться - это написание модуля для поддержки баз данных ну, и надо подумать по поводу нескольких модулей что бы можно было обслуживать разнородный трафик по поводу инсталяции возможно у меня получится через некоторое время поставить коллектор на нагруженный сервер и отдать трафик на другой вобщем, думаю, тестирование обеспечится