Основная проблема заключается в используемом вами сценарии. Переключение контекста очень затратно с точки зрения задержки. sleep 1
переводит ваш скрипт в спящий режим. когда таймер заканчивается, процесс снова становится работоспособным, возможно, он также перераспределяется на другое ядро вашего процессора (миграция ). Таким образом, в основном вы не опрашиваете /proc/stat
ровно каждые 1000 мс, насколько вы можете указать это в своем сообщении.
Между прочим, это не очень хороший способ оценить ядро RT.
Я действительно предлагаю вам использовать, например, sysjitter
от Solarflare sysjitter openonload , который даст вам гораздо лучшие показатели того, как работает ядро.
Основная идея состоит в том, чтобы иметь бесконечный цикл, закрепленный на одном ядре (1 работающий поток на ядро ), который объединяет счетчик отметок времени (TSC )регистр ядра и сравнивает два следующих значения чтобы увидеть разницу, которая может происходить каждый раз, когда ядро вытесняет запущенный процесс (предположительно 100 Гц ).
Таким образом, вы получите лучшее представление о системном джиттере вашего сервера и, возможно, решите немного больше его настроить.
Также вам следует обратить внимание на изоляцию процессора, чтобы иметь выделенное ядро для вашего приложения и динамическую конфигурацию ядра, если ваш вариант использования требует такого улучшения.
Редактировать :Я предлагаю вам использовать awk
только для всех ваших нужд с таким небольшим скриптом, как этот:
#!/usr/bin/awk
BEGIN {
sum1=0;
sum2=0;
result=0;
file="/proc/stat";
while (( getline < file ) > 0 ) {
if ($1=="cpu1"){ sum1=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11 };
}
close(file) ;
print "firt time " sum1;
system("sleep 10");
while (( getline < file ) > 0 ) {
if ($1=="cpu1") { sum2=$2+$3+$4+$5+$6+$7+$8+$9+$10+$11 }
}
close (file)
print "secont time " sum2;
result=sum2-sum1;
print "sum is " result/10;
}
Эта выборка выполняется в течение 10 секунд, а результат делится на десять, чтобы получить среднее время для сегментов длительностью 1 с.
JDK и JRE поставляются с собственной коллекцией доверенных сертификатов. Этот файл называется «cacerts», и его можно найти в JDK_HOME/jre/lib/security
. readlink -f /bin/java
должен указывать, где находится домашний каталог JDK _.
Файл cacerts содержит список всех сертификатов от доверенных центров сертификации (ЦС ). Файл имеет формат JKS, поэтому вы можете манипулировать им с помощьюkeytool
(другой команды, которая является частью JDK ). Вам потребуются права root для изменения файла.
Наиболее хорошо -известные центры сертификации уже являются частью файла cacerts. Поскольку вы столкнулись с исключением, в этом файле должен отсутствовать сертификат ЦС, используемый вашими конечными точками HTTPS. Вам потребуется извлечь сертификат ЦС из удаленной конечной точки и добавить его в файл cacerts. После этого перезапустите приложение, и оно должно работать должным образом.
Если вы не хотите изменять файл cacerts, вы также можете настроить собственное хранилище доверенных сертификатов. В этом подходе вы создаете хранилище доверенных сертификатов, содержащее сертификаты, которым вы хотите доверять, а затем используете свойства javax.net.ssl.trustStore
и javax.net.ssl.trustStorePassword
, чтобы указать на него вашему приложению.
Хорошо, я только что нашел проблему и решение.
Проблема заключалась в том, что в моей папке безопасности (jre/lib/security )файлы внутри были неработающими ссылками на другие файлы, которых не существует.
Я пошел на домашнюю страницу оракула, загрузил jdk из java 8 linux и заменил все файлы в папке безопасности (, но не политику папки ).