Quantcast
Channel: Adobe Community: Message List - ColdFusion
Viewing all 21760 articles
Browse latest View live

Re: CF11: CFChart name parameter no longer works as documented

$
0
0

Funny that you mentioned a memory leak because my CF2016 instance has just died. The logs mention a java heap memory issue. I'm the only user of a new dev box trying to get charts to work properly, so I've been refreshing my browser all day looking at how charts are rendering. Memory usage crept up until CF stopped responding to requests. With 1 user on the box? Something is wrong and what you said makes sense now. We need to get Adobe involved.

 

Setup: Windows Server 2012 R2, 4GB RAM. Java heap min is 256Mb, max is 1024Mb. I've just increased the max to 2048 to see if that makes any difference, but that is not a solution to a memory leak.


CFChart issues

$
0
0

I've been working on tracking down some funkiness with cfcharts. specifically their memory use.  This is what I've noticed about it in CF2016 Update 3.

 

  • Adobe uses EHcache to cache cfcharts in a Cache Instance called "CF_Chart_CacheManager".
  • The "CF_Chart_CacheManager" doesn't get created until you use the cfchart tag.
  • Previous versions of CF used to have the ability to set Threads in the CFAdmin, CF2016 does not, although this is still available in the adminapi. Not sure if it works. The docs says you can set this from 1 to 5.
  • You can't set a custom Disk cache location.  I can't set it in CFAdmin, the neo-graphing.xml, or the adminapi. It always resets back to the default.
  • Changing the settings CFAdmin->  Server Settings -> Charting requires a restart to take affect.
  • The Time-To-Live only appears to work when cache type is set to Disk Cache. This setting appears to be ignored when set to Memory.
  • It doesn't seem to matter if you set it to Disk Cache or Memory Cache, the cfchart images seem to generate in both places. This means disk activity and memory.
  • Although you can create the exact same chart over and over, it never really uses the previous chart its suppose to, it keeps creating new ones.
  • When you set to Disk Cache, EHCache Max Elements In Memory are set to 1 and Disk Persistence: true. The timeToLiveSecods is 0, which means forever and timeToIdleSeconds is 0, also forever. Although "Maximum number of cached images" don't seem to apply to the Disk Cache, but it does seem to apply to the Memory Cache.
  • Did I mention I hate ZingCharts? If they are going to break it, at lease break it with prettier charts. So many other options they could have chosen. These are ugly.
  • Even if you set timeToIdleSeconds or timeToLiveSeconds in EHcache, there is no thread that will come along and expire those unless they get accessed with a get(), then they return null and get expired. This isn't happening with the charts, so they just sit in the CF_Chart_CacheManager. So then you have to wait to hit your maxElementsInMemory for EHcache to expire them. This isn't an Adobe issue, it’s just how EHcache works.
  • Ultimately what's happening is that all these cfcharts are getting added to the EHcache Memory and not being removed until you hit a max. This is causing memory issues on my server.
  • I also suspect that there may be a memory leak in the jvm heap related to all of this. I haven't gotten proof yet, but I did a heap dump with JProfiler and I had about 5G's of charts in memory. Even if I maxed out my Max Elements In Memory, it shouldn’t have used all that memory. I'm doing some debugging and will get back to this thread with my findings.

I’ve created some code to test some stuff. Feel free to play around with it.

 

 

 

<!--- get our CF_Chart_CacheManager --->

<cfscript>

  /* what am I looking for */

  chartCacheName='CF_Chart_CacheManager';

 

  /* gets all the Cache Managers in EHCache */

  cacheManagers = createObject('java', 'net.sf.ehcache.CacheManager').ALL_CACHE_MANAGERS;

 

  for (item in cacheManagers) {

  writeOutput('EHCache Manager Instance Name:' & #item.getName()# & '<br />');

 

  /* pluck our Chart Cache */

  if ( item.getName() == chartCacheName ) {

  cm = item;

  thisCache = cm.getCache(chartCacheName);

  }

  }

 

  if(!isdefined('thisCache')) {

  WriteOutput("CF_Chart_CacheManager doesn't exist yet.");

  abort;

  }

  /* override configuration settings */

  //thisCache.getCacheConfiguration().setTimeToLiveSeconds(30);

  //thisCache.getCacheConfiguration().setTimeToIdleSeconds(30);

  //thisCache.getCacheConfiguration().maxElementsInMemory(5);

</cfscript>

 

 

<!--- output some stats --->

<cfoutput>

  <ul>

  <li>Count: #NumberFormat(thisCache.getStatistics().getSize())#</li>

  <li>Max Elements In Memory: #numberformat(thisCache.getCacheConfiguration().getMaxelementsInMemory())#</li>

  <li>Disk Persistance: #YesNoFormat(thisCache.getCacheConfiguration().isDiskPersistent())#</li>

  <li>Eternal: #YesNoFormat(thisCache.getCacheConfiguration().isEternal())#</li>

  <li>Overflow To Disk: #YesNoFormat(thisCache.getCacheConfiguration().isOverflowToDisk())#</li>

  <li>Time To Live: #NumberFormat(thisCache.getCacheConfiguration().getTimeToLiveSeconds())#</li>

  <li>Time To Idle: #NumberFormat(thisCache.getCacheConfiguration().getTimeToIdleSeconds())#</li>

  <li>Exists: #YesNoFormat(cm.cacheExists(chartCacheName))#</li>

  </ul>

</cfoutput>

 

 

<!--- chart it, ironic --->

<cfchart format="png" chartwidth="600">

  <cfchartseries type="bar" colorlist="##00FF00,##CC0000,##CCFF00,##FF0000,##CC0099,##0000FF,##FFFF66,##FFFFFF">

  <cfchartdata item="Count" value="#thisCache.getStatistics().getSize()#" />

  <cfchartdata item="Hits" value="#thisCache.getStatistics().cacheHitCount()#">

  <cfchartdata item="Disk Hits" value="#thisCache.getStatistics().localDiskHitCount()#" />

  <cfchartdata item="Memory Hits" value="#thisCache.getStatistics().localHeapHitCount()#" />

  <cfchartdata item="Memory Misses" value="#thisCache.getStatistics().localHeapMissCount()#" />

        <cfchartdata item="On Disk" value="#thisCache.getStatistics().getLocalDiskSize()#" />

        <cfchartdata item="On Heap" value="#thisCache.getStatistics().getLocalHeapSize()#" />

        <cfchartdata item="Off Heap" value="#thisCache.getStatistics().getLocalOffHeapSize()#" />

  </cfchartseries>

</cfchart>

 

 

<!--- get methods we can call --->

<cfset WriteDump(thisCache.getStatistics())>

 

 

<!--- dump all the keys in this cache --->

<cfset WriteDump(thisCache.getKeys())>

Re: CF11: CFChart name parameter no longer works as documented

$
0
0

I don't want to hijack Tim357 thread too much more. I started a new thread about it called CFChart Issues (awaiting moderator approval).

Re: CFChart issues

Re: CFChart issues

Re: CFChart issues

$
0
0

I will, I'm just trying to fully understand what's happening under the hood and put together some reproducible examples. I probably need another day to put something together.

Re: CFChart issues

$
0
0

Also the NAME attribute doesn't work at all when chart type is flash or html. I've created a bug report: CF-4198527

 

The memory leak issue with cfcharts eats 12MB of server RAM every time I refresh a page with 8 charts in it. The CF process went from 1GB (physical RAM) to over 2GB after a couple hours of just me refreshing the page - after rebooting it from when it crashed earlier for the same reason! (Java out of memory error). I cannot use CF2016 in production in this state.

 

I also don't like Zingcharts, although I'm about 4 years late to this party! They look awful compared to Webcharts3D, which is also smarter at formatting pies, bars, legends and tooltips.

 

So basically everything in my application to do with charts is broken functionally and aesthetically when upgrading to CF2016.

Re: CFChart issues

$
0
0

This won't help your performance issue, but I highly recommend looking at the zingchart documentation to get the look and feel you want.  Relying on cfchart is probably a mistake, but understanding that recoding may not be an option, using the styling capabilities will help a lot.


Send to printer

$
0
0

I'm on CF10.

 

We need to develop a downtime process for data we maintain on our site.  I know I can send the info to an email address on a regular basis, but we also need to plan for a catastrophic network failure where we can't access our email.

 

Can CF send a report to a network printer? 

 

Then we could schedule it to print every X hours.  This is more than we would need for this particular process.

 

Thanks

ColdFusion experts are welcomed at Győr, Hungary!

$
0
0

Hi!

 

We are searching for experienced Adobe ColdFusion developers. Here you can find what we can offer and our requests as well:

 

We are looking for a software developer with ColdFusion knowledge.



You are going to...

 

       develop a system for recruiting blood donors in the US

be helped by a whole team of testers and documentation specialists

work for a major company in the American blood and plasma donation industry

create software that helps to save lives

take part in further improving an application of a long and respected history

 

You are required to have…

 

  • Active knowledge of English
  • 5 years of ColdFusion experience at least
  • basic level knowledge of MSSQL/ORACLE database

Check us out!

  • An IT company with Outsource and R&D
  • From a Start-Up, we became a stable firm employing more than 100 colleagues
  • We have 4-5 colleagues work on the same project in one office

We love working at Synthesis-Net because of…

great team (74% of our colleagues gave maximum points to “teamwork” in a survey in 2016)

flexible working hours (our “working hours” got the 2nd best place in our survey)

… we have everything to help us do our job (hardware, software, coffee, tea)

Place of work

  • Győr

Apply for this job by sending your CV to hr@szintezis-net.hu or call me (Éva Béres, HR manager) on 00 36/20-382-6777

Re: DateAdd

$
0
0

Sadly I was updating the incorrect date. 

Thanks, I got it to work.

Re: Send to printer

CFChart - Need to know how to pass NULL values from a query in CF11

$
0
0

HI Everyone,

I am really hoping this is an easy question to answer because I have been searching everywhere and all I try is not working.

 

I have a SQL query (created by Oracle DB) that creates multiple cfchartseries using date as the column item and a number for the value. My issue is there are null values for the value field but I need it to plot

 

<cfchartseries

  label="LRF"

  scales= "x,y"

  >

 

       <cfloop query="qTrend">

            <cfif qTrend.LRF gt 0>

                 <cfchartdata item="#qTrend.report_date#" value="#qTrend.LRF#">

            <cfelse>

                 (i have tried:

                     <cfchartdata item="#qTrend.report_date#" value=" ">

<cfchartdata item="#qTrend.report_date#" value="null">

<cfchartdata item="#qTrend.report_date#" value="">

<cfchartdata item="#qTrend.report_date#" value="0">

and none work)

            </cfif>

       </cfloop>

  </cfchartseries>

 

The ERROR I get is
Attribute validation error for CFCHARTDATA. The value of the VALUE attribute is invalid. The value cannot be converted to a numeric because it is not a simple value.Simple values are booleans, numbers, strings, and date-time values

 

The Chart will display when I use the value ="0" but this pulls the line down instead of just STOPPING and then starting again when a numeric value is in the next record.

 

Here is my query

 

THANKS for help... I need it quickly if possible

 

JV

Need help how to access coldfusion 11 from outside via port forwading.

Re: Need help how to access coldfusion 11 from outside via port forwading.


Re: Need help how to access coldfusion 11 from outside via port forwading.

$
0
0

This could be a range of issues, all depending on your hardware. Its not really an issue related to Coldfusion. I would recommend asking on a forum that gives help for port forwarding / server management.

 

The other obvious thing I can add is that I assume you have checked the (windows) firewall on the server itself. Is it active and if so, does it also allow port 8080

Re: Cold Fusion 9 Oracle Upgrade Problem

Unable to start CF application

$
0
0

Hi all,

We are having the problem that the website on a CF9 Instance-server will not start.

As far as I can see in the system-logs, the CF-engine as such starts fine, but we get no response from our application, and nothing in our application-logs.

 

Background:

We have some CF9-installations running on very old Windows servers. We are in the process of migrating to newer Windows-servers.

One server is a one-website server (non-Instance). This application starts just fine on the new migrated-to server.

The server that should run 5 websites on a CF Instance-server, will not start the application, but on the old server it runs just fine.

 

Setup:

We are having the IIS as a front-end, and forward to the different CF-web-sites based on different URLs.
We have checked that *.cfm-documents are at top of the Documents-list, and that the Handler for '.cfm-files points to the correct dll (C:\JRun4\lib\wsconfig\jrun_iis6.dll).

We are running the site on a Developer-license until we have verified that CF9 is ok to use. An option is to upgrade to CF2016, but we are uncertain on how compatible our CF-application-code is.

 

If we copy in a index.html file with proper contents to the website root-directory, this file is showed in the normal way on an accessing client-browser.

 

Does anyone have any ideas or comments on this?

It would be most welcome.

 

Regards, Erik

Re: Unable to start CF application

$
0
0

Have you re-run the Web Server Configuration Tool?

Re: Unable to start CF application

$
0
0

Yes, I believe I did. I had to be Administrator to run it (wsconfig.exe). Now I have the following wsconfig.properties

It looks quite similar to the one on the old server

 

#JRun/ColdFusion MX Web Server Configuration File

#Tue Apr 18 14:30:55 CEST 2017

1=IIS,0,false,""

1.srv=localhost,"cfusion"

1.cfmx=true,C:/inetpub/wwwroot

2=IIS,2,false,""

2.srv=localhost,"Mywebsite"

2.cfmx=true,<null>

Viewing all 21760 articles
Browse latest View live


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>