{"id":54,"date":"2009-06-08T07:31:14","date_gmt":"2009-06-08T07:31:14","guid":{"rendered":"http:\/\/www.countzero.fi\/?p=54"},"modified":"2014-09-21T07:34:17","modified_gmt":"2014-09-21T07:34:17","slug":"odottavan-aika-on-pitka","status":"publish","type":"post","link":"http:\/\/www.countzero.fi\/fi\/2009\/06\/08\/odottavan-aika-on-pitka\/","title":{"rendered":"Odottavan aika on pitk\u00e4"},"content":{"rendered":"<p>Oletko koskaan yritt\u00e4nyt saada Oracle Service Bus 10gR3, Oracle WebLogic Server 9.2.2 tai 10gR3 k\u00e4ynnistym\u00e4\u00e4n nopeasti Linux:lla (Oracle Enterprise Linux, Red Hat Linux mink\u00e4\u00e4n muulla distrolla)? Kest\u00e4\u00e4 hieman, eik\u00f6? No siihen on luonnollisestikin syy ja se on t\u00e4m\u00e4 (Bug ID: 6202721)<a href=\"http:\/\/bugs.sun.com\/bugdatabase\/view_bug.do?bug_id=6202721\">t\u00e4m\u00e4-ei-ole-bugi bugi<\/a>\u00a0normaalissa JVM toteutuksessa.<\/p>\n<p>K\u00e4yt\u00e4nn\u00f6ss\u00e4 satunnaisluvun hankkiminen j\u00e4rjestelm\u00e4lt\u00e4 tapahtuu k\u00e4ytt\u00e4en \/dev\/random tai \/dev\/urandom laiteita. Windowsilla n\u00e4m\u00e4 laitteet ohjautuvat k\u00e4yt\u00e4nn\u00f6ss\u00e4 CryptoAPI:lle ja se toimii ihan hyvin. Linuxilla taasen <a href=\"http:\/\/en.wikipedia.org\/wiki\/Urandom\">\/dev\/random<\/a>\u00a0tuottaa siemenen satunnaisille luvuilleen k\u00e4ytt\u00e4m\u00e4ll\u00e4 <a href=\"http:\/\/en.wikipedia.org\/wiki\/Entropy_pool\">entropy pool<\/a>\u00a0toimintoa joka on Oikein Ja Hienosti Tehty[tm]. Mutta jos satut toimimaan palvelimella, erityisesti palvelimella joka ei ole viel\u00e4 k\u00e4ynnist\u00e4nyt palveluitaan viel\u00e4 &#8211; kuten nyt vaikkapa sovelluspalvelin &#8211; et tuota riitt\u00e4v\u00e4sti entropiaa t\u00e4ytt\u00e4\u00e4ksesi altaitasi melkoiseen aikaan. T\u00e4m\u00e4 taas johtuu siit\u00e4 ett\u00e4 entropia luodaan I\/O operaatioilla, kuten levy- ja verkkoliikenteell\u00e4 (jota siis et viel\u00e4 tuota). N\u00e4in ollen eritt\u00e4in satunnainen satunnaisuus jota \/dev\/random luo enemm\u00e4nkin hankaloittaa kuin auttaa, koska kaiken k\u00e4ynnistys on ik\u00e4v\u00e4\u00e4 ja hidasta.<\/p>\n<p>Eli t\u00e4m\u00e4 on kohta jossa yst\u00e4v\u00e4mme \/dev\/urandom astuu kuvioon omalla ei-est\u00e4v\u00e4ll\u00e4 toiminnallaan ja v\u00e4hemm\u00e4n satunnaisella satunnaisuudellaan (mutta silti ihan kohtuullisella satunnaisuudella suurimpaan osaan k\u00e4ytt\u00f6tarkoituksia). Paitsi ett\u00e4 se t\u00e4m\u00e4-ei-ole-bugi ohittaa \/dev\/urandomin. Luonnollisesti <a href=\"http:\/\/www.itonguard.com\/20090313\/weblogic-starts-slow\/\">t\u00e4h\u00e4n<\/a>\u00a0<a href=\"http:\/\/bugs.sun.com\/bugdatabase\/view_bug.do?bug_id=6202721\">on<\/a>\u00a0<a href=\"http:\/\/forums.oracle.com\/forums\/thread.jspa?threadID=853480\">useita<\/a>\u00a0kiertomenetelmi\u00e4 l\u00f6ydett\u00e4viss\u00e4, mutta henkil\u00f6kohtaisesti preferoin securerandom.source arvon muuttamista $JAVA_HOME\/jre\/lib\/security\/java.security-tiedostosta t\u00e4llaiseksi: securerandom.source=file:\/dev\/.\/urandom. Nyt kaikki k\u00e4ynnistyy h\u00f6yhenenkevyesti, juuri niinkuin kuuluukin.<\/p>\n\n<!-- NgfbSharing::get_buttons content filter skipped: buttons_on_index not enabled -->\n","protected":false},"excerpt":{"rendered":"<p>Oletko koskaan yritt\u00e4nyt saada Oracle Service Bus 10gR3, Oracle WebLogic Server 9.2.2 tai 10gR3 k\u00e4ynnistym\u00e4\u00e4n nopeasti Linux:lla (Oracle Enterprise Linux, Red Hat Linux mink\u00e4\u00e4n muulla distrolla)? Kest\u00e4\u00e4 hieman, eik\u00f6? No siihen on luonnollisestikin syy ja se on t\u00e4m\u00e4 (Bug ID:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[2],"tags":[26,20],"class_list":["post-54","post","type-post","status-publish","format-standard","hentry","category-tekniset","tag-infrastuktuuri","tag-java-fi"],"_links":{"self":[{"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/posts\/54","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/comments?post=54"}],"version-history":[{"count":1,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/posts\/54\/revisions"}],"predecessor-version":[{"id":55,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/posts\/54\/revisions\/55"}],"wp:attachment":[{"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/media?parent=54"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/categories?post=54"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.countzero.fi\/fi\/wp-json\/wp\/v2\/tags?post=54"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}