wtorek, listopada 29, 2011
wtorek, listopada 22, 2011
Chmura na kryzys
Producenci drogiego pudełkowego oprogramowania powinni przy drugiej fali kryzysu zauważyć następującą rzecz: klientowi zaciskającemu pasa nie będą w stanie sprzedawać swoich produktów tak jak do tej pory. Poza tym klient będzie uciekał od modelu licencyjnego per CPU w wirtualizację (drastyczny przypadek: w VMWare ESXi 5 można stworzyć maszynę z 1 podstawką procesora i 16. rdzeniami - i zainstalować na niej Windows Server Standard Edition). Jedyną szansą na sprzedaż może być subskrypcja w modelu Software-as-a-Service. Przy atrakcyjnych cenach dostosowanych do wielkości użycia oprogramowania można też powalczyć o mniejszych klientów. Trzeba myśleć jak Warren Buffet - widzieć zagrożenia ale też i szanse. I być zwinnym.Ile kosztuje miesięcznie 30 komponentów Tibco w ramach Silver public (5 centów za 1h)? 3 600 zł + opłaty za Amazon EC2 (podobne koszty).
niedziela, listopada 20, 2011
BW WS crash test
Tworzymy jeden WebService z operacjami 'a', 'b', 'c'. Operacja 'a' woła na tym samym komponencie dwa razy pod rząd operację 'b', operacja 'b' 4 razy operację 'c'. Operacja 'c' na wyjściu zwraca wejście. Teraz z SOAPUI 20 wątkami przez 60 sekund wywołujemy operację 'a' (z jednego zewnętrznego requestu robi się 10 wewnętrznych). Poniżej przepisana kontrolka SOAP Request Reply wykorzystująca JBoss Netty, wytrzymuje większą liczbę równoległych wywołań.
MaxJobs.x.serviceagent=250
FlowLimit.x.serviceagent=250ActivationLimit.x.serviceagent=true
EnableOnStartup.x.serviceagent=true
bw.plugin.http.server.maxProcessors=250
bw.plugin.http.server.acceptCount=250
bw.plugin.http.server.httpcomponents.workerThread=40
25 transakcji na sekundę w SOAPUI oznacza 250 wywołań wewnątrz BW. Na dwurdzeniowym energooszczędnym Intelu SU4100 1,3GHz 10W TDP na Windows 7 można dojść z Netty do 35tps.
Po włączeniu persystentnych połączeń BW jest w stanie przy 20 wątkach w SOAPUI dostarczyć 45tps. Limit jest ściśle związany z liczbą równoległych połączeń na wejściu i wątków ResponseThreadPool.
bw.plugin.http.client.usePersistentConnectionManager=true
bw.plugin.http.client.usePersistentConnectionManagerForSSL=true (BW 5.12+)
bw.plugin.http.client.checkForStaleConnections=false
bw.plugin.http.client.maxConnectionsPerHost=500
bw.plugin.http.client.maxTotalConnections=500
bw.plugin.http.client.ResponseThreadPool=40
bw.plugin.http.client.ResponseThreadPool.type=single
piątek, listopada 18, 2011
Tibco BW JDBC Memory Leak
Jeśli PreparedStatement typu SELECT w BW nie zawiera parametrów [statement.indexOf('?')!=-1] to nie jest cache-owany (ale nie jest też zamykany, cała nadzieja w GC). W przeciwnym przypadku JDBCPoolManager trzyma pulę obiektów JDBCConnectionEntry, które to trzymają rosnący (per każdy nowy proces) wektor otwartych PreparedStatement-ów. Błędu wycieku cache-owanych zapytań nie mają aktywności UPDATE i SQL DIRECT. Zwalnianie zasobów odbywa się na zasadzie zamykania nieużywanych przez ostatnie 300 sekund połączeń JDBC.czwartek, listopada 17, 2011
poniedziałek, listopada 14, 2011
Linux power drain solved
Phoronix should be happy.niedziela, listopada 13, 2011
Luther
Facet, który ma pod górkę. Jego zachowania balansują na granicy autodestrukcji. Popełnia błędy, gwałtownie reaguje, ale w ogólnym rozrachunku jest skuteczny. Ma dziwne relacje z inteligentną neurotyczną morderczynią. Serial trzyma w napięciu... i nie jest amerykański. Zrobiło go BBC! W niedzielę po 20-tej w Ale Kino.Muzyka na wejście to Massive Attack 'Paradise Circus'. A w House-ie 'Teardrop'.
EMS: korelacja komunikatów po stronie klienta, crash testy
Korelacja komunikatów po stronie klienta, to sprytny sposób na obejście problemu wydajnościowego z GetQueueMessage (za każdym razem nowa sesja i nowy konsument z selektorem), ale:rozwiązanie jest wrażliwe na odkładanie się dużej ilości komunikatów na kolejce (trzeba "przejrzeć" wszystkie, żeby sparować kilka); komunikaty mogą ginąć - utykać w pobraniu wstępnym sesji (prefetch != none) - wtedy widzimy objawy timeout-ów w komunikacji request-response.
piątek, listopada 11, 2011
Vaadin - jeszcze szybszy sposób na raport
Framework pozwala na bardzo szybki dewelopment. No i używa go Tomek - a to jest poważny argument za :)
środa, listopada 09, 2011
poniedziałek, listopada 07, 2011
Tusk chce odstrzelić Schetynę
Za wp.pl: 'Z nieoficjalnych informacji "Wiadomości" wynika, że Schetyna miałby zostać w nowym rządzie ministrem transportu. Schetyna - twierdzą "Wiadomości" właśnie podczas spotkania z premierem usłyszał taką propozycję'.Nie byłoby kwiatów po wotum nieufności.
5 x Dlaczego?
Kadra zarządzająca bez odpowiednich kwalifikacji, w tym etycznych; "pływanie" w korporacji; brak obiektywnych audytów; fałszywe raportowanie sukcesów i zamiatanie problemów pod dywan; brak wizji, długoterminowej i dostosowywanej na bieżąco strategii, chaos i degradacja.niedziela, listopada 06, 2011
JMS Wrapper
Koncepcja ta w Weblogicu stosowana jest od dawna i ma na celu zapewnić większą niezawodność oraz wydajność. Do czego przydałby się JMS Wrapper w Tibco BusinessWorks? Do transparentnego przywracania połączenia JMS i ukrywania wyjątków związanych z wadliwym połączeniem, do obsługi konfiguracji serwerów primary-secondary (w szczególności odbierania odpowiedzi z dwóch sewerów przez jeden logiczny MessageConsumer, kiedy wcześniej nastąpiła awaria serwera primary i przełączenie na secondary), do trzymania w pamięci podręcznej obiektów, których stworzenie jest czasochłonne (nowa sesja i nowy receiver z selektorem w przypadku komunikacji request-response; umieszczenie w cache-u sesji i zmodyfikowanego receivera powinno dramatycznie zmniejszyć obciążenie serwera przy dużych wolumenach komunikatów), do wymuszania SLA przy próbie wysyłania nadmiernej ilości danych do serwera JMS.środa, listopada 02, 2011
GUI do Solaris Cluster
/usr/sbin/cacaoadm enable; /usr/sbin/smcwebserver enable
SUNW.Proxy_SMF_failover to zasób bazujący na serwisie SMF!
Straciłem zaufanie do Solaris Cluster
root@sx:/builds/ohac/usr/src# /usr/gnu/bin/grep -c -r XXX * | grep -v ":0"cmd/scshutdown/scshutdown.c:1
cmd/mdm/rpc.metacld/common/mdc_init.c:2
cmd/dcs/run_reserve.ksh:1
cmd/dcs/scvxvmck.cc:2
cmd/dcs/reserve.cc:5
cmd/dcs/scsi.cc:2
cmd/dcs/scgdevs.c:2
cmd/scqsd/QuorumServer.cc:1
cmd/ha-services/hafoip/hafoip_start.c:1
cmd/ha-services/hafoip/hafoip_prenet_start.c:1
cmd/ha-services/hafoip/hafoip_stop.c:1
cmd/ha-services/haevent/event.c:1
cmd/ha-services/hastorageplus/hastorageplus_common.c:1
cmd/ha-services/hascip/hascip_init.c:1
cmd/rpc.scxcfg/scxcfgd_svc.c:2
cmd/rpc.scxcfg/scxcfgd_ccr.cc:1
cmd/scconf/scconf.c:1
cmd/cl_apid/cl_apid_main.cc:1
cmd/cl_apid/caapi_event.cc:1
cmd/cl_apid/caapi_mapping.cc:3
cmd/cl_apid/caapi_reg_cache.cc:4
cmd/cl_apid/caapi_event.h:1
cmd/cl_apid/caapi_mapping.h:1
cmd/cl_apid/client_reg_info.cc:2
cmd/ssm_wrapper/ssm_ipmp.c:1
cmd/ssm_wrapper/ssm_call.c:5
cmd/ssm_wrapper/ssm_net.c:2
cmd/ssm_wrapper/ssm_ipmp_callback.c:1
cmd/cmm/pmmd/pmmd_impl.cc:10
cmd/cmm/pmmd_adm/pmmd_adm.cc:3
cmd/cl_eventd/cl_eventd.cc:3
cmd/pxfs/clexecd.cc:4
cmd/replctl/replctl_main.cc:1
cmd/did/didadm.c:3
cmd/rpc.clquery/clquery_device.c:3
cmd/rpc.clquery/rpc_queue.c:8
cmd/rpc.clquery/rpc_manager.c:2
cmd/rpc.clquery/clquery_network.c:3
cmd/rpc.clquery/clquery_main.c:3
common/cl/repl/repl_mgr/rm_repl_service.cc:13
common/cl/repl/repl_mgr/rm_state_mach.cc:8
common/cl/repl/repl_mgr/cb_coord_control_impl.cc:4
common/cl/repl/repl_mgr/repl_mgr_impl.cc:4
common/cl/repl/repl_mgr/dependency_mgr_impl.cc:1
common/cl/repl/repl_mgr/service_admin_impl.cc:1
common/cl/repl/repl_mgr/dependency_mgr_impl.h:1
common/cl/repl/rmm/rmm.cc:3
common/cl/repl/service/replica_handler.cc:4
common/cl/repl/service/repl_service.h:2
common/cl/repl/service/multi_ckpt_handler.cc:1
common/cl/repl/service/repl_service.cc:3
common/cl/libuos/uos_misc.cc:1
common/cl/libuos/cladm_impl.cc:9
common/cl/clprivnet/clprivnet.h:3
common/cl/cmm/membership_engine_impl.cc:33
common/cl/cmm/automaton_impl.cc:4
common/cl/cmm/cmm_comm_impl.cc:1
common/cl/cmm/callback_registry_impl.cc:1
common/cl/cmm/ucmm_comm_impl.cc:22
common/cl/cmm/membership_manager_impl.cc:52
common/cl/cmm/ff_impl.cc:8
common/cl/cmm/cmm_impl.cc:1
common/cl/cmm/ucmm_api.h:1
common/cl/cmm/ucmm_impl.cc:8
common/cl/pxfs/lib/pxfs_misc.cc:1
common/cl/pxfs/client/pxspecial.cc:3
common/cl/pxfs/client/pxvfs.cc:12
common/cl/pxfs/mount/mount_server_impl.cc:13
common/cl/pxfs/mount/mount_client_impl.cc:21
Podobnie można zrobić dla " bug " i " workaround ", można jeszcze poczytać:
// XXX Pass by reference of cast value doesn't work with SC5.2
// XXX Need to file a bug, in the mean time we can work around
// XXX it by passing in the proper type and cast it back.
Sterowniki klastra będące modułami jądra Solaris pisane są w C i C++. Dodatkowo kod kompilowany jest w trybie debug, a wynikowe obiekty podlegają zmianom strukturalnym. Część funkcji dla klastra jest już w jądrze Solarisa, a moduły je przykrywają. Po przejściu problemu w cl_boostrap z inicjalizacją w nv151 pojawiają się dalsze awarie wynikające z tego, że Sun Cluster został skompilowany innym kompilatorem (z innymi CFLAGS) niż system. Mamy w jądrze kod i ABI strasznie wrażliwe na zmiany kompilatora. Klaster dodatkowo grzebie w 3-ciej warstwie modelu OSI i może nie być kompatybilny ze wszystkimi sterownikami kart sieciowych.
CTF is generated from stabs, and stabs are only generated in debug mode (-g). Unfortunately debug mode has side-effects:
- It disables the inline generation of functions and this can have a major impact on performance. The C++ compiler provides the option -g0 that provides the same feature as the -g option but does not disable inlining.
- It enables variable globalization which means that static local variables will be defined as global instead of local and will have their names made unique by prepending a file specific global prefix. This increases the size of binaries and can break mdb debugging modules which are using some static symbol defined in Sun Cluster.
The Sun Studio 10 and 11 C++ compilers have no option to disable globalization. RFE 6289358 is opened get this option. While this option is not available, globalization can be disabled by using the -G option of the ctfconvert binary.
- On sparc, it disables tail-call optimization so this creates less optimized code and this can impact performance. The C++ compiler provides the option -Qoption cg -Qiselect-T1 to re-enable tail-call optimization.
The debug mode has no other known side-effects. Some other optimizations which may have been disabled will be re-enabled by the -xO3 optimization level.
Subskrybuj:
Posty (Atom)