Вообщем переодически сервер дохнет по: The WebLogic Server encountered a critical failure java.lang.OutOfMemoryError: Metaspace Reason: There is a panic condition in the server. The server is configured to exit on panic И хотя это гавно пишет типа Reason: There is a panic condition in the server. The server is configured to exit on panic чёт ни хуя он ни куда не exit.... Вообщем т.к разбираться с тем чем он жрётся нет ни времени ни желания (оно обязательно появится)... как вариант можно приделать костыль... костыль будет заключаться в ребуте сервера при возникновении этой ошибки. Что значит для этого надо... Желания и понимание что так жить нельзя, и вообще... Делаем новый модуль называем скажем: Reboot-OOMMetaSpace Идём в в новый модуль делаем Policy: Называем его OOM-Metaspace и говорит что это Server log: Жмём next в Configuration Policy пишем: log.logMessage.contains('java.lang.OutOfMemoryError: Metaspace'...
Долбанный микрософт ввел очередные timzone для России:
http://blogs.technet.com/b/dst2007/archive/2014/08/22/announcement-update-for-russian-time-zone-changes.aspx
Значение текущей timzone можно посмотреть в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -> TimeZoneKeyName если вы находитесь в Самаре или новейшем Chokurdakh то там будет значение
Russia Time Zone 3
Russia Time Zone 10
Проверка текущей и всех вообще timezone java:
import java.util.*;
class TzTest {
public static void main(String[] args) {
String[] timeZones = TimeZone.getAvailableIDs();
List<String> tzList = new ArrayList<String>();
for (String timeZone : timeZones)
{
TimeZone tz = TimeZone.getTimeZone(timeZone);
StringBuilder timeZoneStr = new StringBuilder();
timeZoneStr.append("( GMT ").append(tz.getRawOffset() / (60 * 60 * 1000)).append(" ) ").append(tz.getDisplayName()).append("(").append(timeZone).append(")");
tzList.add(timeZoneStr.toString());
System.out.println(timeZoneStr.toString());
}
TimeZone tz = TimeZone.getTimeZone(java.util.TimeZone.getDefault().getID());
StringBuilder timeZoneStr = new StringBuilder();
timeZoneStr.append("Current timzone: ").append("( GMT ").append(tz.getRawOffset() / (60 * 60 * 1000)).append(" ) ").append(tz.getDisplayName());
tzList.add(timeZoneStr.toString());
System.out.println(timeZoneStr.toString());
}
}
Без workaround Samara вывод будет вида:
PS C:\Program Files\Java\jdk1.7.0_45> ./bin/java TzTest
( GMT 13 ) West Samoa Time(Pacific/Apia)
( GMT 13 ) Phoenix Is. Time(Pacific/Enderbury
( GMT 13 ) Tokelau Time(Pacific/Fakaofo)
( GMT 13 ) Tonga Time(Pacific/Tongatapu)
( GMT 14 ) GMT+14:00(Etc/GMT-14)
( GMT 14 ) Line Is. Time(Pacific/Kiritimati)
Current timzone: ( GMT -3 ) Brasilia Time
или
PS C:\Program Files\Java\jdk1.6.0_45> ./bin/java TzTest
( GMT 10 ) GMT+10:00(Asia/Chita)
( GMT 9 ) Irkutsk Time(Asia/Irkutsk)
( GMT 4 ) Moscow Standard Time(Europe/Moscow)
( GMT -5 ) Eastern Standard Time(America/Grand_Turk)
( GMT 4 ) Moscow Standard Time(W-SU)
Current timezone: America/Caracas
Workaround:
Открываем <$JAVA_HOME>/jre/lib/tzmappings и пишем туда 2 волшебные строчки, т.е делаем mapping для новых timzone.
Russia Time Zone 3:6,7::Europe/Samara:
Russia Time Zone 10:921,921::Etc/GMT-11:
В принципе так можно замапить любую timezone... список на что можно маппить можно посмотреть с помощью вышеприведённой java программки.
http://blogs.technet.com/b/dst2007/archive/2014/08/22/announcement-update-for-russian-time-zone-changes.aspx
Значение текущей timzone можно посмотреть в реестре:
HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\TimeZoneInformation -> TimeZoneKeyName если вы находитесь в Самаре или новейшем Chokurdakh то там будет значение
Russia Time Zone 3
Russia Time Zone 10
Проверка текущей и всех вообще timezone java:
import java.util.*;
class TzTest {
public static void main(String[] args) {
String[] timeZones = TimeZone.getAvailableIDs();
List<String> tzList = new ArrayList<String>();
for (String timeZone : timeZones)
{
TimeZone tz = TimeZone.getTimeZone(timeZone);
StringBuilder timeZoneStr = new StringBuilder();
timeZoneStr.append("( GMT ").append(tz.getRawOffset() / (60 * 60 * 1000)).append(" ) ").append(tz.getDisplayName()).append("(").append(timeZone).append(")");
tzList.add(timeZoneStr.toString());
System.out.println(timeZoneStr.toString());
}
TimeZone tz = TimeZone.getTimeZone(java.util.TimeZone.getDefault().getID());
StringBuilder timeZoneStr = new StringBuilder();
timeZoneStr.append("Current timzone: ").append("( GMT ").append(tz.getRawOffset() / (60 * 60 * 1000)).append(" ) ").append(tz.getDisplayName());
tzList.add(timeZoneStr.toString());
System.out.println(timeZoneStr.toString());
}
}
Без workaround Samara вывод будет вида:
PS C:\Program Files\Java\jdk1.7.0_45> ./bin/java TzTest
( GMT 13 ) West Samoa Time(Pacific/Apia)
( GMT 13 ) Phoenix Is. Time(Pacific/Enderbury
( GMT 13 ) Tokelau Time(Pacific/Fakaofo)
( GMT 13 ) Tonga Time(Pacific/Tongatapu)
( GMT 14 ) GMT+14:00(Etc/GMT-14)
( GMT 14 ) Line Is. Time(Pacific/Kiritimati)
Current timzone: ( GMT -3 ) Brasilia Time
или
PS C:\Program Files\Java\jdk1.6.0_45> ./bin/java TzTest
( GMT 10 ) GMT+10:00(Asia/Chita)
( GMT 9 ) Irkutsk Time(Asia/Irkutsk)
( GMT 4 ) Moscow Standard Time(Europe/Moscow)
( GMT -5 ) Eastern Standard Time(America/Grand_Turk)
( GMT 4 ) Moscow Standard Time(W-SU)
Current timezone: America/Caracas
Workaround:
Открываем <$JAVA_HOME>/jre/lib/tzmappings и пишем туда 2 волшебные строчки, т.е делаем mapping для новых timzone.
Russia Time Zone 3:6,7::Europe/Samara:
Russia Time Zone 10:921,921::Etc/GMT-11:
В принципе так можно замапить любую timezone... список на что можно маппить можно посмотреть с помощью вышеприведённой java программки.
Комментарии
Отправить комментарий