Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Homework1. Тяпуев Дмитрий. Магистратура. Политех #21

Merged
merged 4 commits into from
Mar 15, 2024

Conversation

typuichik123
Copy link
Contributor

No description provided.

@lamtev lamtev assigned zvladn7 and unassigned lamtev Feb 21, 2024
@lamtev lamtev requested review from zvladn7 and removed request for lamtev February 21, 2024 19:22
Copy link
Contributor

@zvladn7 zvladn7 left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

8 баллов:

  • есть замечания по коду
  • по отчету не увидел, что вы нашли точку разладки. А профилировать имеет смысл именно в этой точке.
  • по какой-то причине рез-ты профилирования есть только для 1к rps get и 5к rps put

return new Response(Response.ACCEPTED, Response.EMPTY);
}

public void closeDAO() {
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

странно, что dao открывает один класс, а закрывает другой. При этом сначала вызывается метод close у server'a, а затем сразу же вызывается метод close у dao.

if (id == null || id.isEmpty()) {
return new Response(Response.BAD_REQUEST, Response.EMPTY);
}
MemorySegment key = MemorySegment.ofArray(id.getBytes(StandardCharsets.UTF_8));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

здесь и ниже по коду никак не обрабатываются исключения dao


public class ServiceImplementation implements ru.vk.itmo.Service {

private ServerImplementation server;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

сначала поля с final, затем уже без final.

return new Response(Response.BAD_REQUEST, Response.EMPTY);
}
Entry<MemorySegment> entry = new BaseEntry<>(MemorySegment.ofArray(id.getBytes(StandardCharsets.UTF_8)),
MemorySegment.ofArray(request.getBody()));
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

request.getBody() никак не проверяется. Оно может быть null, что, кажется, не совсем ожидается от метода PUT

Такое поведение - это уже DELETE

(тут все занимает MemorySegment.asSlice).

## Вывод
По результатам экспериментов выяснилось, что база может гораздо лучше принимать данные, чем их искать. Необходима
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

"база может гораздо лучше принимать данные, чем их искать"

  1. Непонятно, что такое "лучше". Вероятно, на чтение база держит меньше rps, чем максимальное кол-во rps при записи
  2. Нельзя было такой вывод сделать без нагрузочного тестирования? Модель LSM заточена на то, чтобы принимать большое кол-во записей.

2. 3000 запросов в секунду на протяжении 1 минуты: У сервера появились проблемы. На последних 10 персентиль
резко возрастает время. Однако все время пока остается в пределах 100мс.
![get_3000rs.png](get_3000rs.png)
3. 10000 запросов в секунду на протяжении 1 минуты: Сервер перестал справляться
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А точку разладки не нашли? Из вашего анализа непонятно, какой максимальный rps на чтение способна держать ваша реализация.

3. 10000 запросов в секунду на протяжении 1 минуты: У сервера появились проблемы. На последнем персентиль
резко возрастает время. Однако все время пока остается в пределах 100мс.
![put_10000rs.png](put_10000rs.png)
4. 30000 запросов в секунду на протяжении 1 минуты: Сервер перестал справляться.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

А точку разладки не нашли? Из вашего анализа непонятно, какой максимальный rps на запись способна держать ваша реализация.

@zvladn7 zvladn7 merged commit 4d38ada into polis-vk:main Mar 15, 2024
2 checks passed
GenryEden pushed a commit to GenryEden/2024-highload-dht that referenced this pull request Mar 20, 2024
* added my DAO and http rest api

* some fixes for codeclimate

* all done

---------

Co-authored-by: Vladislav Zybkin <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants