-
Notifications
You must be signed in to change notification settings - Fork 48
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
Conversation
src/main/java/ru/vk/itmo/test/tyapuevdmitrij/ServerImplementation.java
Outdated
Show resolved
Hide resolved
src/main/java/ru/vk/itmo/test/tyapuevdmitrij/ServerStarter.java
Outdated
Show resolved
Hide resolved
There was a problem hiding this 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() { |
There was a problem hiding this comment.
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)); |
There was a problem hiding this comment.
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; |
There was a problem hiding this comment.
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())); |
There was a problem hiding this comment.
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). | ||
|
||
## Вывод | ||
По результатам экспериментов выяснилось, что база может гораздо лучше принимать данные, чем их искать. Необходима |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
"база может гораздо лучше принимать данные, чем их искать"
- Непонятно, что такое "лучше". Вероятно, на чтение база держит меньше rps, чем максимальное кол-во rps при записи
- Нельзя было такой вывод сделать без нагрузочного тестирования? Модель LSM заточена на то, чтобы принимать большое кол-во записей.
2. 3000 запросов в секунду на протяжении 1 минуты: У сервера появились проблемы. На последних 10 персентиль | ||
резко возрастает время. Однако все время пока остается в пределах 100мс. | ||
![get_3000rs.png](get_3000rs.png) | ||
3. 10000 запросов в секунду на протяжении 1 минуты: Сервер перестал справляться |
There was a problem hiding this comment.
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 минуты: Сервер перестал справляться. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
А точку разладки не нашли? Из вашего анализа непонятно, какой максимальный rps на запись способна держать ваша реализация.
* added my DAO and http rest api * some fixes for codeclimate * all done --------- Co-authored-by: Vladislav Zybkin <[email protected]>
No description provided.