Я настраиваю тест для одного экземпляра EC2.В этом EC2 есть только приложение Django.У него нет S3 / CloundFront или RDS, которые ему помогают.Все чисто на Docker и базовая настройка памяти и процессора.
Моя цель - я хочу увидеть эмпирическую производительность моего единственного EC2.Это поможет мне приблизительно оценить стоимость производства.
Вы можете пропустить это и перейти к моей проблеме:
Вот мои настройки производства
1 баланс нагрузки
2 узла с идентичной настройкой с использованием образа докера
1 корзина / облачный фронт
1 rds
Программное обеспечение:
django == 2.0.5
djangorestframework-jwt == 1.11.0
djangorestframework == 3.8.2
Инструменты:
JMeter 4.0 r1823414
javac 10.0.1
java 10.0.1 2018-04-17
Java (TM) SE Runtime Environment 18.3 (сборка 10.0.1 + 10)
Java HotSpot (TM) 64-битный сервер VM 18.3 (сборка 10.0.1 + 10, смешанный режим)
Java-версия "1.8.0_171" Java (TM) SE Runtime Environment (сборка 1.8.0_171)-b11) Java HotSpot (TM) 64-разрядная серверная виртуальная машина (сборка 25.171-b11, смешанный режим) javac 1.8.0_171
Параметры:
ThreadГруппа
- Количество потоков: 10
- Период обновления: 1
- Количество циклов: 1
Диспетчер заголовков HTTP
- Content-Type
, Application/json
- Authorization: jwt ${token}
HTTP-запрос
- http
- localhost
- порт: 8000
- POST
- путь: /api-token-auth/
- данные тела: {"username": "myname", "password": "mysecretpassword"}
На данный момент тест хорош.Все зеленые, я могу иметь token
назад от Django
.
Проблема:
org.apache.http.NoHttpResponseException: localhost:8000 failed to respond
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:141)
at org.apache.http.impl.conn.DefaultHttpResponseParser.parseHead(DefaultHttpResponseParser.java:56)
at org.apache.http.impl.io.AbstractMessageParser.parse(AbstractMessageParser.java:259)
at org.apache.http.impl.DefaultBHttpClientConnection.receiveResponseHeader(DefaultBHttpClientConnection.java:163)
at org.apache.http.impl.conn.CPoolProxy.receiveResponseHeader(CPoolProxy.java:165)
at org.apache.http.protocol.HttpRequestExecutor.doReceiveResponse(HttpRequestExecutor.java:273)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl$5.doReceiveResponse(HTTPHC4Impl.java:401)
at org.apache.http.protocol.HttpRequestExecutor.execute(HttpRequestExecutor.java:125)
at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:272)
at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:83)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.executeRequest(HTTPHC4Impl.java:842)
at org.apache.jmeter.protocol.http.sampler.HTTPHC4Impl.sample(HTTPHC4Impl.java:581)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy.sample(HTTPSamplerProxy.java:67)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1231)
at org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase.sample(HTTPSamplerBase.java:1220)
at org.apache.jmeter.threads.JMeterThread.doSampling(JMeterThread.java:622)
at org.apache.jmeter.threads.JMeterThread.executeSamplePackage(JMeterThread.java:546)
at org.apache.jmeter.threads.JMeterThread.processSampler(JMeterThread.java:486)
at org.apache.jmeter.threads.JMeterThread.run(JMeterThread.java:253)
at java.lang.Thread.run(Thread.java:748)
Дополнительные параметры
JSON Extractor
- Main sample only
- Имена созданных переменных: token
- Выражения JSON Path: $.token
- Номер совпадения (0 для случайного): 1
HTTP-запрос
- http
- localhost
- port: 8000
- PATCH
- /api/branches/5/
-Данные тела: {"name": "Bangkok"}
Я пытался это Но я не мог заставить его работать.Вот мой навигатор
Отладочный сэмплер:
Jmeter's token
пуст
JMeterVariables:
JMeterThread.last_sample_ok=false
JMeterThread.pack=org.apache.jmeter.threads.SamplePackage@79e6c86e
START.HMS=095906
START.MS=1526612346142
START.YMD=20180518
TESTSTART.MS=1526639371341
__jm__Users__idx=0
__jmeter.USER_TOKEN__=Users 1-1
token=
token_matchNr=0
Вопросы:
Как разрешить jmeter
захватить jwt
токен и стрелять в другие конечные точки?
Обновление 1:
Когда я отключаюPatch Branch
.Отладочный сэмплер показывает мне значение token
Update2:
Я ошибочно вызвал переменную.Но проблема PATCH
все еще сохраняется.Теперь я могу позвонить token
.Вот моя request
PATCH http://localhost:8000/api/branches/5/
PATCH data:
{
"name": "Bangkok"
}
[no cookies]
Request Headers:
Connection: keep-alive
Autorization: jwt eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJ1c2VyX2lkIjoxMCwidXNlcm5hbWUiOiJ0b255b2QiLCJleHAiOjE1MjY2NzIzOTMsImVtYWlsIjoidG9ueW9kQG1teC5jb20iLCJvcmlnX2lhdCI6MTUyNjY0MzU5M30.mjKJ2sRFx26pyChET1ORzLmv6umL7B1_Sy8wnNJO-iQ
Content-Type: Application/json
Content-Length: 26
Host: localhost:8000
User-Agent: Apache-HttpClient/4.5.5 (Java/10.0.1)
Обновление 3:
Проблема, кажется, jmeter
сторона, потому что.Когда я открываю бэкэнд-лог.PATCH
никогда не доходят до бэкэнда
INFO|18/May/2018 11:52:04|"POST /api-token-auth/ HTTP/1.1" 200 224
INFO|18/May/2018 12:01:35|"POST /api-token-auth/ HTTP/1.1" 200 224
Обновление: 4
Найдена подсказка.Это может быть проблема из HTTPClient4
Обновление: 5
Попробуйте имитировать исходную среду java8.Возникает та же проблема https://jmeter.apache.org/download_jmeter.cgi
http://www.jmeter -archive.org / org-apache-http-NoHttpResponseException-td5719349.html