Global-Cache-Manager for Multi-Environment Applications

Hi,
Within our server implementation we provide a "multi-project" environment. Each project is fully isolated from the rest of the server e.g. in terms of file-system usage, backup and other ressources. As one might expect the way to go is using a single VM with multiple BDB environments.
Obviously each JE-Environment uses its own cache. Within a our environment with dynamic numbers of active projects this causes a problem because the optimal cache configuration within a given memory frame depends on the JE-Environments in use BUT there is no way to define a global JE cache for ALL JE-Environments.
Our "plan of attack" is to implement a Global-Cache-Manager to dynamicly configure the cache sizes of all active BDB environments depending on the given global cache size.
Like Federico proposed the starting point for determining the optimal cache setting at load time will be a modification to the DbCacheSize utility so that the return value can be picked up easily, rather than printed to stdout. After that the EnvironmentMutableConfig.setCacheSize will be used to set the cache size. If there is enough Cache-RAM available we could even set a larger cache but I do not know if that really makes sense.
If Cache-Memory is getting tight loading another BDB environment means decreasing cache sizes for the already loaded environments. This is also done via EnvironmentMutableConfig.setCacheSize. Are there any timing conditions one should obey before assuming the memory is really available? To determine if there are any BDB environments that do not use their cache one could query each cache utilization using EnvironmentStats.getCacheDataBytes() and getCacheTotalBytes().
Are there any comments to this plan? Is there perhaps a better solution or even an implementation?
Do you think a global cache manager is something worth back-donating?
Related Postings: Multiple envs in one process?
Stefan Walgenbach

Here is the updated DbCacheSize.java to allow calling it with an API.
Charles Lamb
* See the file LICENSE for redistribution information.
* Copyright (c) 2005-2006
*      Oracle Corporation.  All rights reserved.
* $Id: DbCacheSize.java,v 1.8 2006/09/12 19:16:59 cwl Exp $
package com.sleepycat.je.util;
import java.io.File;
import java.io.PrintStream;
import java.math.BigInteger;
import java.text.NumberFormat;
import java.util.Random;
import com.sleepycat.je.Database;
import com.sleepycat.je.DatabaseConfig;
import com.sleepycat.je.DatabaseEntry;
import com.sleepycat.je.DatabaseException;
import com.sleepycat.je.Environment;
import com.sleepycat.je.EnvironmentConfig;
import com.sleepycat.je.EnvironmentStats;
import com.sleepycat.je.OperationStatus;
import com.sleepycat.je.dbi.MemoryBudget;
import com.sleepycat.je.utilint.CmdUtil;
* Estimating JE in-memory sizes as a function of key and data size is not
* straightforward for two reasons. There is some fixed overhead for each btree
* internal node, so tree fanout and degree of node sparseness impacts memory
* consumption. In addition, JE compresses some of the internal nodes where
* possible, but compression depends on on-disk layouts.
* DbCacheSize is an aid for estimating cache sizes. To get an estimate of the
* in-memory footprint for a given database, specify the number of records and
* record characteristics and DbCacheSize will return a minimum and maximum
* estimate of the cache size required for holding the database in memory.
* If the user specifies the record's data size, the utility will return both
* values for holding just the internal nodes of the btree, and for holding the
* entire database in cache.
* Note that "cache size" is a percentage more than "btree size", to cover
* general environment resources like log buffers. Each invocation of the
* utility returns an estimate for a single database in an environment.  For an
* environment with multiple databases, run the utility for each database, add
* up the btree sizes, and then add 10 percent.
* Note that the utility does not yet cover duplicate records and the API is
* subject to change release to release.
* The only required parameters are the number of records and key size.
* Data size, non-tree cache overhead, btree fanout, and other parameters
* can also be provided. For example:
* $ java DbCacheSize -records 554719 -key 16 -data 100
* Inputs: records=554719 keySize=16 dataSize=100 nodeMax=128 density=80%
* overhead=10%
*    Cache Size      Btree Size  Description
*    30,547,440      27,492,696  Minimum, internal nodes only
*    41,460,720      37,314,648  Maximum, internal nodes only
*   114,371,644     102,934,480  Minimum, internal nodes and leaf nodes
*   125,284,924     112,756,432  Maximum, internal nodes and leaf nodes
* Btree levels: 3
* This says that the minimum cache size to hold only the internal nodes of the
* btree in cache is approximately 30MB. The maximum size to hold the entire
* database in cache, both internal nodes and datarecords, is 125Mb.
public class DbCacheSize {
    private static final NumberFormat INT_FORMAT =
        NumberFormat.getIntegerInstance();
    private static final String HEADER =
        "    Cache Size      Btree Size  Description\n" +
    //   12345678901234  12345678901234
    //                 12
    private static final int COLUMN_WIDTH = 14;
    private static final int COLUMN_SEPARATOR = 2;
    private long records;
    private int keySize;
    private int dataSize;
    private int nodeMax;
    private int density;
    private long overhead;
    private long minInBtreeSize;
    private long maxInBtreeSize;
    private long minInCacheSize;
    private long maxInCacheSize;
    private long maxInBtreeSizeWithData;
    private long maxInCacheSizeWithData;
    private long minInBtreeSizeWithData;
    private long minInCacheSizeWithData;
    private int nLevels = 1;
    public DbCacheSize (long records,
               int keySize,
               int dataSize,
               int nodeMax,
               int density,
               long overhead) {
     this.records = records;
     this.keySize = keySize;
     this.dataSize = dataSize;
     this.nodeMax = nodeMax;
     this.density = density;
     this.overhead = overhead;
    public long getMinCacheSizeInternalNodesOnly() {
     return minInCacheSize;
    public long getMaxCacheSizeInternalNodesOnly() {
     return maxInCacheSize;
    public long getMinBtreeSizeInternalNodesOnly() {
     return minInBtreeSize;
    public long getMaxBtreeSizeInternalNodesOnly() {
     return maxInBtreeSize;
    public long getMinCacheSizeWithData() {
     return minInCacheSizeWithData;
    public long getMaxCacheSizeWithData() {
     return maxInCacheSizeWithData;
    public long getMinBtreeSizeWithData() {
     return minInBtreeSizeWithData;
    public long getMaxBtreeSizeWithData() {
     return maxInBtreeSizeWithData;
    public int getNLevels() {
     return nLevels;
    public static void main(String[] args) {
        try {
            long records = 0;
            int keySize = 0;
            int dataSize = 0;
            int nodeMax = 128;
            int density = 80;
            long overhead = 0;
            File measureDir = null;
            boolean measureRandom = false;
            for (int i = 0; i < args.length; i += 1) {
                String name = args;
String val = null;
if (i < args.length - 1 && !args[i + 1].startsWith("-")) {
i += 1;
val = args[i];
if (name.equals("-records")) {
if (val == null) {
usage("No value after -records");
try {
records = Long.parseLong(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (records <= 0) {
usage(val + " is not a positive integer");
} else if (name.equals("-key")) {
if (val == null) {
usage("No value after -key");
try {
keySize = Integer.parseInt(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (keySize <= 0) {
usage(val + " is not a positive integer");
} else if (name.equals("-data")) {
if (val == null) {
usage("No value after -data");
try {
dataSize = Integer.parseInt(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (dataSize <= 0) {
usage(val + " is not a positive integer");
} else if (name.equals("-nodemax")) {
if (val == null) {
usage("No value after -nodemax");
try {
nodeMax = Integer.parseInt(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (nodeMax <= 0) {
usage(val + " is not a positive integer");
} else if (name.equals("-density")) {
if (val == null) {
usage("No value after -density");
try {
density = Integer.parseInt(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (density < 1 || density > 100) {
usage(val + " is not betwen 1 and 100");
} else if (name.equals("-overhead")) {
if (val == null) {
usage("No value after -overhead");
try {
overhead = Long.parseLong(val);
} catch (NumberFormatException e) {
usage(val + " is not a number");
if (overhead < 0) {
usage(val + " is not a non-negative integer");
} else if (name.equals("-measure")) {
if (val == null) {
usage("No value after -measure");
measureDir = new File(val);
} else if (name.equals("-measurerandom")) {
measureRandom = true;
} else {
usage("Unknown arg: " + name);
if (records == 0) {
usage("-records not specified");
if (keySize == 0) {
usage("-key not specified");
     DbCacheSize dbCacheSize = new DbCacheSize
          (records, keySize, dataSize, nodeMax, density, overhead);
     dbCacheSize.caclulateCacheSizes();
     dbCacheSize.printCacheSizes(System.out);
if (measureDir != null) {
measure(System.out, measureDir, records, keySize, dataSize,
nodeMax, measureRandom);
} catch (Throwable e) {
e.printStackTrace(System.out);
private static void usage(String msg) {
if (msg != null) {
System.out.println(msg);
System.out.println
("usage:" +
"\njava " + CmdUtil.getJavaCommand(DbCacheSize.class) +
"\n -records <count>" +
"\n # Total records (key/data pairs); required" +
"\n -key <bytes> " +
"\n # Average key bytes per record; required" +
"\n [-data <bytes>]" +
"\n # Average data bytes per record; if omitted no leaf" +
"\n # node sizes are included in the output" +
"\n [-nodemax <entries>]" +
"\n # Number of entries per Btree node; default: 128" +
"\n [-density <percentage>]" +
"\n # Percentage of node entries occupied; default: 80" +
"\n [-overhead <bytes>]" +
"\n # Overhead of non-Btree objects (log buffers, locks," +
"\n # etc); default: 10% of total cache size" +
"\n [-measure <environmentHomeDirectory>]" +
"\n # An empty directory used to write a database to find" +
"\n # the actual cache size; default: do not measure" +
"\n [-measurerandom" +
"\n # With -measure insert randomly generated keys;" +
"\n # default: insert sequential keys");
System.exit(2);
private void caclulateCacheSizes() {
int nodeAvg = (nodeMax * density) / 100;
long nBinEntries = (records * nodeMax) / nodeAvg;
long nBinNodes = (nBinEntries + nodeMax - 1) / nodeMax;
long nInNodes = 0;
     long lnSize = 0;
for (long n = nBinNodes; n > 0; n /= nodeMax) {
nInNodes += n;
nLevels += 1;
minInBtreeSize = nInNodes *
     calcInSize(nodeMax, nodeAvg, keySize, true);
maxInBtreeSize = nInNodes *
     calcInSize(nodeMax, nodeAvg, keySize, false);
     minInCacheSize = calculateOverhead(minInBtreeSize, overhead);
     maxInCacheSize = calculateOverhead(maxInBtreeSize, overhead);
if (dataSize > 0) {
lnSize = records * calcLnSize(dataSize);
     maxInBtreeSizeWithData = maxInBtreeSize + lnSize;
     maxInCacheSizeWithData = calculateOverhead(maxInBtreeSizeWithData,
                              overhead);
     minInBtreeSizeWithData = minInBtreeSize + lnSize;
     minInCacheSizeWithData = calculateOverhead(minInBtreeSizeWithData,
                              overhead);
private void printCacheSizes(PrintStream out) {
out.println("Inputs:" +
" records=" + records +
" keySize=" + keySize +
" dataSize=" + dataSize +
" nodeMax=" + nodeMax +
" density=" + density + '%' +
" overhead=" + ((overhead > 0) ? overhead : 10) + "%");
out.println();
out.println(HEADER);
out.println(line(minInBtreeSize, minInCacheSize,
               "Minimum, internal nodes only"));
out.println(line(maxInBtreeSize, maxInCacheSize,
               "Maximum, internal nodes only"));
if (dataSize > 0) {
out.println(line(minInBtreeSizeWithData,
               minInCacheSizeWithData,
               "Minimum, internal nodes and leaf nodes"));
out.println(line(maxInBtreeSizeWithData,
               maxInCacheSizeWithData,
"Maximum, internal nodes and leaf nodes"));
} else {
out.println("\nTo get leaf node sizing specify -data");
out.println("\nBtree levels: " + nLevels);
private int calcInSize(int nodeMax,
               int nodeAvg,
               int keySize,
               boolean lsnCompression) {
/* Fixed overhead */
int size = MemoryBudget.IN_FIXED_OVERHEAD;
/* Byte state array plus keys and nodes arrays */
size += MemoryBudget.byteArraySize(nodeMax) +
(nodeMax * (2 * MemoryBudget.ARRAY_ITEM_OVERHEAD));
/* LSN array */
     if (lsnCompression) {
     size += MemoryBudget.byteArraySize(nodeMax * 2);
     } else {
     size += MemoryBudget.BYTE_ARRAY_OVERHEAD +
(nodeMax * MemoryBudget.LONG_OVERHEAD);
/* Keys for populated entries plus the identifier key */
size += (nodeAvg + 1) * MemoryBudget.byteArraySize(keySize);
return size;
private int calcLnSize(int dataSize) {
return MemoryBudget.LN_OVERHEAD +
MemoryBudget.byteArraySize(dataSize);
private long calculateOverhead(long btreeSize, long overhead) {
long cacheSize;
if (overhead == 0) {
cacheSize = (100 * btreeSize) / 90;
} else {
cacheSize = btreeSize + overhead;
     return cacheSize;
private String line(long btreeSize,
               long cacheSize,
               String comment) {
StringBuffer buf = new StringBuffer(100);
column(buf, INT_FORMAT.format(cacheSize));
column(buf, INT_FORMAT.format(btreeSize));
column(buf, comment);
return buf.toString();
private void column(StringBuffer buf, String str) {
int start = buf.length();
while (buf.length() - start + str.length() < COLUMN_WIDTH) {
buf.append(' ');
buf.append(str);
for (int i = 0; i < COLUMN_SEPARATOR; i += 1) {
buf.append(' ');
private static void measure(PrintStream out,
File dir,
long records,
int keySize,
int dataSize,
int nodeMax,
boolean randomKeys)
throws DatabaseException {
String[] fileNames = dir.list();
if (fileNames != null && fileNames.length > 0) {
usage("Directory is not empty: " + dir);
Environment env = openEnvironment(dir, true);
Database db = openDatabase(env, nodeMax, true);
try {
out.println("\nMeasuring with cache size: " +
INT_FORMAT.format(env.getConfig().getCacheSize()));
insertRecords(out, env, db, records, keySize, dataSize, randomKeys);
printStats(out, env,
"Stats for internal and leaf nodes (after insert)");
db.close();
env.close();
env = openEnvironment(dir, false);
db = openDatabase(env, nodeMax, false);
out.println("\nPreloading with cache size: " +
INT_FORMAT.format(env.getConfig().getCacheSize()));
preloadRecords(out, db);
printStats(out, env,
"Stats for internal nodes only (after preload)");
} finally {
try {
db.close();
env.close();
} catch (Exception e) {
out.println("During close: " + e);
private static Environment openEnvironment(File dir, boolean allowCreate)
throws DatabaseException {
EnvironmentConfig envConfig = new EnvironmentConfig();
envConfig.setAllowCreate(allowCreate);
envConfig.setCachePercent(90);
return new Environment(dir, envConfig);
private static Database openDatabase(Environment env, int nodeMax,
boolean allowCreate)
throws DatabaseException {
DatabaseConfig dbConfig = new DatabaseConfig();
dbConfig.setAllowCreate(allowCreate);
dbConfig.setNodeMaxEntries(nodeMax);
return env.openDatabase(null, "foo", dbConfig);
private static void insertRecords(PrintStream out,
Environment env,
Database db,
long records,
int keySize,
int dataSize,
boolean randomKeys)
throws DatabaseException {
DatabaseEntry key = new DatabaseEntry();
DatabaseEntry data = new DatabaseEntry(new byte[dataSize]);
BigInteger bigInt = BigInteger.ZERO;
Random rnd = new Random(123);
for (int i = 0; i < records; i += 1) {
if (randomKeys) {
byte[] a = new byte[keySize];
rnd.nextBytes(a);
key.setData(a);
} else {
bigInt = bigInt.add(BigInteger.ONE);
byte[] a = bigInt.toByteArray();
if (a.length < keySize) {
byte[] a2 = new byte[keySize];
System.arraycopy(a, 0, a2, a2.length - a.length, a.length);
a = a2;
} else if (a.length > keySize) {
out.println("*** Key doesn't fit value=" + bigInt +
" byte length=" + a.length);
return;
key.setData(a);
OperationStatus status = db.putNoOverwrite(null, key, data);
if (status == OperationStatus.KEYEXIST && randomKeys) {
i -= 1;
out.println("Random key already exists -- retrying");
continue;
if (status != OperationStatus.SUCCESS) {
out.println("*** " + status);
return;
if (i % 10000 == 0) {
EnvironmentStats stats = env.getStats(null);
if (stats.getNNodesScanned() > 0) {
out.println("*** Ran out of cache memory at record " + i +
" -- try increasing the Java heap size ***");
return;
out.print(".");
out.flush();
private static void preloadRecords(final PrintStream out,
final Database db)
throws DatabaseException {
Thread thread = new Thread() {
public void run() {
while (true) {
try {
out.print(".");
out.flush();
Thread.sleep(5 * 1000);
} catch (InterruptedException e) {
break;
thread.start();
db.preload(0);
thread.interrupt();
try {
thread.join();
} catch (InterruptedException e) {
e.printStackTrace(out);
private static void printStats(PrintStream out,
Environment env,
String msg)
throws DatabaseException {
out.println();
out.println(msg + ':');
EnvironmentStats stats = env.getStats(null);
out.println("CacheSize=" +
INT_FORMAT.format(stats.getCacheTotalBytes()) +
" BtreeSize=" +
INT_FORMAT.format(stats.getCacheDataBytes()));
if (stats.getNNodesScanned() > 0) {
out.println("*** All records did not fit in the cache ***");

Similar Messages

  • Use configuration management for multi site application

    Hi,
    My client develop an application multi site with designer 6i. We want to use the configuration management .
    The application will be deploy in 10 sites, but not necessary with the same version of the application.
    You want to control that with the configuration management of designer 6i.
    Someone has some experience with that ??
    Can i have some reference or detail experience ??
    Thanks a lot
    chris

    I asked this sort of question for creating a live and a test release of an application. The answer I got was to create a configuration of based on my application and then to create an applications based on the the versions of the configuration.
    Then, I could check the configuration against the main workarea to tell me what was out of date.
    I could also use the configuration wizard to create a new version (of the configuration) selecting the versions of the modules I wanted (ie: newer ones). Then I created a new version of the release application using the new configuration.
    Finally, in the command tool I can select the release work area which will extract correct module versions (I have the .fmbs) and I can compile a release.
    I guess your solution here is to have a main workarea with all the source, then a configuration of that and then one release application for every site. Each release application could use a different version of the configuration - depending on how up to date they are.
    HTH
    Steve

  • SCCM Software Updates (and SCUP) vs. Application Management for 3rd Party Application Patching

    Hi,
    We're getting ready to tackle the phenomena known as Java patching, and I was wondering if I could get your personal preference; SCCM Software Updates (and SCUP) vs. Application Management for 3rd Party Application Patching?
    I probably should give a little background on my environment; It's a university atmosphere, so unless it's policy, you have to ask nicely...can't tell people to do things they don't want to; multiple version of required versions of Java for what ever reason,
    which need to be identified, grouped together, and then upgrade as much as possible without breaking their old applications.
    I was thinking that Application Management probably made more sense where it is more robust, especially for removing multiple installs of Java on a single system, but Software Updates/SCUP looks like it was built for this type of patching, so I'm a bit confused
    why SCCM would have two components which essentially did the same thing.
    Your thoughts?
    Thanks,
    Bill

    For Java version management specifically you can already achieve a lot by using the Application Model in CM12.
    You can define supersedence between the different versions, just make sure to opt for uninstall of the older version when defining it.

  • [svn:fx-trunk] 5604: Ensuring qualified class names are used in type selector cache keys for Flex 4 applications .

    Revision: 5604
    Author: [email protected]
    Date: 2009-03-26 14:00:26 -0700 (Thu, 26 Mar 2009)
    Log Message:
    Ensuring qualified class names are used in type selector cache keys for Flex 4 applications.
    QE: Yes, this should address style issues for test cases that contain two different components with the same local name.
    Dev: No
    Doc: No
    Checkintests: Pass
    Modified Paths:
    flex/sdk/trunk/frameworks/projects/framework/src/mx/styles/StyleProtoChain.as

    Remember that Arch Arm is a different distribution, but we try to bend the rules and provide limited support for them.  This may or may not be unique to Arch Arm, so you might try asking on their forums as well.

  • Java Security Manager in Multi-threaded application

    I am writing a multi-threaded application listening (TCP and UDP) to several ports. To help implement certain security features (eg. refusing connections from certain ip address), I'm using the java.lang.SecurityManager (by subclassing it). I am having a few problems and queries and am hoping someone here can help me.
    1. As all the threads are calling the checkAccept(host, port) method. Is there a way to know which thread is currently accessing the security manager? For example if host A were to make 2 connections to the application, one to thread 1 (say listening to port 5001) and the other to to thread 2 (say listening to port 5002). I intend to refuse the connection to thread 2 but there is not way of differentiating the 2 connections since they are from the same host and there isnt any way of knowing their port number.
    2. Are calls to the Security Manager thread safe?
    I have been having this problem for a long time, would appreciate if someone can help point me to the right direction. cheers.

    1. As all the threads are calling the
    checkAccept(host, port) method. Is there a way to
    know which thread is currently accessing the security
    manager?Just use Thread.currentThread(). As specified in the Javadoc for e.g. SecurityManager.checkAccept().
    2. Are calls to the Security Manager thread safe? No.

  • Multi - environment application

    We need to build an application that uses DBsession s.o. in order to
    access remote Oracle databases without SQL*NET connections or any
    vendor-provided connectivity products , but only with Forte middleware.
    The application must be multi environment, so we cannot setup only one
    big environment that groups all the dbs. We're trying to use reference
    partitions to access dbsession on the remote environments, but we would
    like this thing performed in a dinamical way. We would like to change
    the env search path inside the service object itself, or , in
    alternative, inside the application. Unfortunately, the tech.note 10425
    says that the only way to change the env.search path dinamically is to
    change it inside the nameservice subagent. But this should affect all
    the service objects only when these will be restarted. Can we access a
    remote service (in other words, a service object on a reference
    partition) only when (and where) we want to do that ??
    Thank you in advance.
    Michele Amato [email protected]
    Forte' Developer phone: +39 39- 6864542 Milano
    +39 828- 398366 Battipaglia
    Alcatel Telecom Italia

    Feel free to consider this issues closed.
    We figured it out.
    We used the combination of a filter event trapping off a user action, coupled with PL/SQL code to extract values from the filtered event and inserted them into the appropriate table{s}.

  • Set global font size for the whole application.

    Is there a way of setting a font globally
    What I mean I want to set a font size for the whole application.
    Is this posable ??
    Thanks Craig

    After posting over 300 questions I would think you would be passed the "New to Java TechnologY" stage.
    The answer for Swing applications is yes this can be done.
    I don't know how to do it for AWT components.
    Since you posted the question in this forum (as oppose to the Swing forum for Swing related problems), I'm assuming this is an AWT related question and therefore I can't help you.

  • Installing Global Trade Management for SAP 4.7 EN

    Greetings,
    We want to implement GTM (Contract Management) for SAP 4.7 EN.
    I am trying to find more information on this, includsing how to activate, but have not been able to find much.
    Are there any building blocks or guides put out by SAP on this?
    **EDIT for new information**
    You can enable GTM in 4.7 by Activating extension set for SAP EA-GLT.
    Edited by: hanarin on Aug 2, 2009 10:35 PM
    Edited by: hanarin on Aug 2, 2009 10:37 PM

    Hi,
    To activate GTM goto transaction WB2B_CUS -> Activate Components and check GT active checkbox.

  • High Level Recommendations For Multi-Tier Application

    Hello:
    I have been reviewing Windows Azure documentation and I'm still somewhat confused/unsure regarding which configuration and set of services is best for my organization.  I will start off by giving a high level description of the what the environment
    should be.
    A) 2 "Front End" IIS Instances, Load Balanced running an MVC 4.0/.Net 4.5 Web Application
    B) A "dedicated" SQL SERVER 2008 R2 server with medium-high resources (ample RAM and processing power)
    C) An application server which hosts a Windows Service.  This service will require access to the SQL Server listed in B. In addition the IIS "Front Ends" listed in A should have access to a "shared" folder or directory where files
    can be dropped and processed by this windows service.
    I have looked at Azure Web Site, Azure Virtual Machines and Cloud Services and I'm not sure what is best for our situation.  If we went with Azure Web Sites, do we need TWO virtual machines, or a single virtual which can "scale out" up to
    6 instances.  We would get a Standard Web Site, and the documentation I see says it can scale out to 6 instances. I'm somewhat confused regarding the difference between a "Virtual Machine" and an "Instance".  In addition, does
    Azure Web Sites come with built in load balancing between instances, virtual machines? both?  Or is it better to go with Azure Virtual Machines and host the IIS Front end there?  I'm just looking for a brief description/advise as to which would be
    better.
    Regarding the SQL Server database, is there a benefit to using Azure SQL Database? Or should we go with a virtual machine with SQL Server installed as the primary template?  We have an existing SQL Server database and initially we would like to move
    up our existing schema to the Cloud.  We are looking for decent processing power for the database and RAM.
    Finally the "application" tier, which requires a Windows Service. Is an Azure Virtual Machine the best route to take? If so, can an Azure Web Site (given that is the best setup for our needs) write to a shared folder/drive on a secondary virtual
    machine.  Basically there will be json instruction files dropped  into a folder which the application tier will pick up, de-serialize and do backend processing.
    As a final question, if we also wanted to use SSRS, is there updated/affordable pricing and hosting options for this as well?
    I appreciate any feedback or advice.  We are definitely leaning towards Azure and I am trying to wrap my head around what our best configuration and service selection should be.
    Thanks in advance

    Hi,
    A) 2 "Front End" IIS Instances, Load Balanced running an MVC 4.0/.Net 4.5 Web Application
    B) A "dedicated" SQL SERVER 2008 R2 server with medium-high resources (ample RAM and processing power)
    C) An application server which hosts a Windows Service.  This service will require access to the SQL Server listed in B. In addition the IIS "Front Ends" listed in A should have access to a "shared" folder or directory where files can be dropped and
    processed by this windows service.
    Base on my experience and your requirement, you could try to use this solution:
    1.Two cloud service to host your "front end" web application. Considering to Load Balanced, You could use traffic manager to set Load Balancing Settings.
    2. About sql server or ssrs, you have two choice:>1,create a sql server vm  >2, use sql azure and azure ssrs
    I guess all of them could meet your requirement.
    3. About your C requirement, which type application is? If it is website, You could host it on azure website or cloud service.
    And if you want to manage the file by your code, I think you could save your file into azure blob storage. You could add,delete file using rest API(http://msdn.microsoft.com/en-us/library/windowsazure/dd135733.aspx
    ) or code(http://www.windowsazure.com/en-us/documentation/articles/storage-dotnet-how-to-use-blobs-20/ ). And the Blob storage could be as a share file
    folder.
    And for accurately, about the billing question , you could ask azure billing support for more details.
    try this:http://www.windowsazure.com/en-us/support/contact/
    Hope it helps.
    Regards,
    We are trying to better understand customer views on social support experience, so your participation in this interview project would be greatly appreciated if you have time. Thanks for helping make community forums a great place.
    Click
    HERE to participate the survey.

  • Account management for a J2SE application

    Hi,
    I am looking for an open source package that allows creating and managing user accounts in a J2SE application. It should directly support log in/log out actions and does not have to be very sophisticated. Thank you for your suggestions.
    Regards,
    Chris

    Hello,
    1. Switching the locale is not a bad idea. This does, however, not switch your keyboard settings, a job done by the OS.
    2. I have no idea what is happening in your second problem. A short example might help as a demonstration. But I myself cannot test it, as I have no Cyrillic font installed on my system.
    Maybe this link will help you:
    http://java.sun.com/docs/books/tutorial/i18n/index.html

  • Is it possible to make a global keyboard command for an Applescript application?

    I have created an application with Applescript, and I want to create a global keyboard command that brings up an input dialogue.
    If that's not possible, is there a way to make a dialogue appear when the Dock icon is clicked?

    The regular keyboard shortcuts work with whatever application is currently active, so that leaves option number 2.  To add a dynamic menuu item to the dock menu, you can add a couple of handlers to the CocoaAppletAppDelegate.scpt, which is located in the bundle contents of the Cocoa-AppleScript applet (created when you use the File > New from Template menu item):
      on applicationDockMenu_(sender) -- dynamically add a menu item to the dock tile
        set myDockMenu to current application's NSMenu's alloc's initWithTitle_("") -- don't really need a title here
        myDockMenu's addItemWithTitle_action_keyEquivalent_("My spiffy new menu item", "menuAction:", "")
        return myDockMenu
      end applicationDockMenu_
      on menuAction_(sender) -- do something when the dock menu item is selected
        set menuTitle to sender's title() as text
        # do something
        tell current application to activate -- make sure dialog is in front
        display dialog "The " & quoted form of menuTitle & " menu item was clicked…"
        tell application "System Events" to keystroke tab using {command down} -- switch to previous application
      end menuAction_

  • SSIS - pass variables to Data Manager for Appset and Application name

    Hi folks,
    I'm building an SSIS package, and I can't work out how to set the Appset and Application names in the Convert Task item - I have created the item, and the variables, but I can't work out how to reference the two.
    Any tips or help greatly appreciated - this is one of the worst-documented pieces of software I've ever seen!
    Thanks,
    Jason

    Hi,
    Please refer to the other SSIS packages already created. We need not set these parameters while creating the SSIS package. When we link the SSIS to DM package, we can dynamically send the appset name and the application names.
    Hope this helps.

  • Global Default Font for Application

    Hi,
    I'm using flash builder 4.5 and I would like to set a custom font as the default font for the entire application.
    I've tried setting fontFamily="myCustomEmbeddedFont" in the main application with no success.
    Is there a spot that I can declare a custom embedded font and then set it to be the global default font for the entire application?
    Thanks

    Hi Flex harUI,
    That doesnt work... I also tried fontFamily: myCentGoth;
    global
        selection-color: #950000;
        font-family: myCentGoth; 
    @font-face {
        src: url("assets/GOTHIC.TTF");
        fontFamily: myCentGoth;
        embedAsCFF: true;
        fontWeight: normal;
    @font-face {
        src: url("assets/GOTHICB.TTF");
        fontWeight: bold;
        fontFamily: myCentGoth;
        embedAsCFF: true;
    @font-face {
        src: url("assets/GOTHICBI.TTF");
        fontWeight: bold;
        fontStyle: italic;
        fontFamily: myCentGoth;
        embedAsCFF: true;
    @font-face {
        src: url("assets/GOTHICI.TTF");
        fontStyle: italic;
        fontFamily: myCentGoth;
        embedAsCFF: true;
        fontWeight: normal;

  • How to configure Oracle Enterprise Manager for ASM RAC Database ?

    Dears,,
    We have two databases (Primary & Standby), each database has two instances
    Database version: Oracle Database 10g Enterprise Edition Release 10.2.0.4.0 - 64bit
    How to configure Oracle Enterprise Manager for this environment ?
    I need documentation for this please.
    Many thanks & Regards,,

    Assuming an agent is running on the servers you want to monitor,
    navigate to the Agent home page (Via setup --> Agent)
    When in the agent home page select 'Add Database'and press [Go]
    Assuming yopur database now gets recognized, select the Configure icon and enter the password for dbsnmp.
    When done, press [Ok] to return to the agent home page.
    Regards
    Rob
    http://oemgc.wordpress.com

  • How to use Cache Management Library (CML) for custom applications?

    Hello,
    We are planning the migration of multiple applications (J2EE, Portal, Web-Dynpro for Java) from 7.01 to 7.3 and we would like to replace some custom cache implementations with a central cache management provided by the SAP Web-AS Java.
    Several SAP standard services (e.g. UME, Configuration Manager, Scheduler) seems to use the "Cache Management Library" (CML):
    [http://help.sap.com/saphelp_nw73/helpdata/en/4a/f833eb306628d2e10000000a42189b/frameset.htm]
    Such caches can be monitored using SAP Management Console (AS Java Caches).
    Portal Runtime (cache_type=CML) and Web Page Composer can also be configured to use CML:
    [http://help.sap.com/saphelp_nw73/helpdata/en/49/d822a779cf0e80e10000000a42189b/frameset.htm]
    [http://help.sap.com/saphelp_nw70ehp2ru/helpdata/en/13/76db395a3140fcb17b8d24f5966766/frameset.htm]
    So our questions:
    How to use CML for custom applications?
    Is there any example or documentation available?
    Kind Regards,
    Dirk

    Thanks Vidyut! You've answered my question.
    I placed the jar file in the $CATALINA_HOME/shared/lib directory. But where should I place the taglib TLD file? And how should I reference it in web.xml?
    Currently, my web.xml is as follows and it doesn't work.
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <!DOCTYPE web-app
    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
    "http://java.sun.com/dtd/web-app_2_3.dtd">
    <web-app>
    <taglib>
    <taglib-uri>http://abc.com</taglib-uri>
    <taglib-location>c:\Tomcat\shared\lib\mytags-taglib.tld</taglib-location>
    </taglib>
    </web-app>
    Thanks again!
    Joe

Maybe you are looking for

  • Root.sh script failed to run after 11gR2 grid installation

    Hi, I am trying to install 11gR2 on RHEL 5.3 . however I have problems running th post install script on both nodes. here is the output of the root.sh script on the first node : [root@rac1 grid]# ./root.sh Running Oracle 11g root.sh script... The fol

  • Does Lightroom 4 work with Windows Vista?

    Hi, I can't find Vista mentioned anywhere in association with Lightroom 4. Before I purchase this software, could someone please tell me if I will have compatability issues between LR4 and Vista. Thank you

  • IDC File name format -  customaize TIMESTAMP format

    Hi. Can we change the default TIMESTAMP format in IDC as we want to deliver the filename as yyyymmddhhmiss.dat? Is there any provision in Oracle B2B? Regards Jawah

  • How can I get query filter dates in report heading?

    <p>Hello everybody.</p><p>I'm pretty new at this so I hope this is the place to ask this question.</p><p>I'm trying to create a report in WebI where I want a number of cases sorted by a number of categories and between different dates. The dates are

  • How to relate or tie a Quotation to a Sales deal

    Hi friends, I created a Promotion and then a Sales deal included in the promotion. The sales deal has a price condition customer/material and I can have another sales deal with other different price condition for the same customer/material. The quest