Thanks for your reply. My app id is my-sree.appspot.com. I have only 1 index defined on a date property.
We get 6.5 hours of cpu time each reset on a daily basis. Do both cpu_ms and api_cpu_ms gets counted for this? My app requires a lot of writes and hence I want to optimize for best performance. I have very few indexes created as well. And on a average my entity has around 10 properties. On Aug 21, 8:39 pm, Don Schwarz <[email protected]> wrote: > What is your app id? Do you have a large number of indexes defined for this > entity kind? > > FYI, it's certainly a good idea to optimize for performance, but I wouldn't > worry too much about the particular point at which warnings appear in the > request logs. These are just guidelines to let you know which requests are > consuming the most CPU. If you're only planning to update these entities on > a fraction of your requests then the overall CPU cost should not be too > high. However, if your application is doing a lot of writes then by all > means, try to optimize this (e.g. by reducing the number of indexes, or > perhaps by reducing the number of columns if you don't query them > independently). > > On Fri, Aug 21, 2009 at 6:55 AM, sree <[email protected]> wrote: > > > In a test app I have created, I am able to insert only 2 rows per > > request (for 1 entity with 10 properties only) into the datastore by > > using low-level api without getting any warnings for cpu_ms / > > api_cpu_ms usage. > > > However if I try to insert 3 rows or more (again only 1 entity being > > inserted), the cpu gets used for more than 1s thereby generating a > > warning or error from GAE. > > > Stats from GAE log: > > > For inserting 2 records -> /insert.do 200 77ms 655cpu_ms 643api_cpu_ms > > (everything ok) > > > For inserting 3 records -> /insert.do 200 134ms 979cpu_ms > > 964api_cpu_ms (yellow warning) > > > For inserting 10 records -> /insert.do 200 178ms 3249cpu_ms > > 3216api_cpu_ms (red warning) > > > How to optimize the ‘cpu_ms and api_cpu_ms’ usage? Can GAE perform > > only as many operations as 2 inserts into datastore if we want to keep > > within the warning levels? > > > Can you please provide some feedback as to whether I am doing anything > > wrong in code or have not used a good practice to achieve better > > performance. Thanks in advance. > > > Code in servlet (parsing and split operations have been benchmarked > > and they are not causing any adverse impact on performance): > > > Pattern p1 = Pattern.compile(","); // created as servlet instance > > variable > > > public void doPost(HttpServletRequest req, HttpServletResponse res) > > throws ServletException, IOException > > { > > try { > > > DatastoreService datastore = > > DatastoreServiceFactory.getDatastoreService(); > > List<Entity> entity = new ArrayList<Entity>(); > > > for (int i = 0; i < n; i++) { > > > String[] record = > > p1.split("1,tester,1.0,1.0,1.0,1.0,1.0,1.0"); > > > data1 = Long.parseLong(record[0]); > > data2 = record[1]; > > data3 = Double.parseDouble(record[2]); > > data4 = Double.parseDouble(record[3]); > > data5 = Double.parseDouble(record[4]); > > data6 = Double.parseDouble(record[5]); > > data7 = Double.parseDouble(record[6]); > > data8 = Float.parseFloat(record[7]); > > > Entity e = new > > Entity(DetailsBean.class.getSimpleName()); > > e.setProperty("column1", i); > > e.setProperty("column2", data2); > > e.setProperty("column3", i + data3); > > e.setProperty("column4", i + data4); > > e.setProperty("column5", i + data5); > > e.setProperty("column6", i + data6); > > e.setProperty("column7", i + data7); > > e.setProperty("column8", i + data8); > > e.setProperty("crDate", new Date()); > > e.setProperty("modDate", new Date()); > > > entity.add(e); > > > } > > > datastore.put(entity); > > > } catch (Exception e) { > > e.printStackTrace(); > > } finally { > > persistenceManager.close(); > > } > > } > > > Entity bean code: > > > package com.pojo; > > > import java.io.Serializable; > > import java.util.Date; > > import java.util.List; > > > import javax.jdo.annotations.IdGeneratorStrategy; > > import javax.jdo.annotations.IdentityType; > > import javax.jdo.annotations.NotPersistent; > > import javax.jdo.annotations.PersistenceCapable; > > import javax.jdo.annotations.Persistent; > > import javax.jdo.annotations.PrimaryKey; > > > @PersistenceCapable(identityType = IdentityType.APPLICATION) > > public class DetailsBean implements Serializable { > > > private static final long serialVersionUID = 1L; > > > �...@primarykey > > �...@persistent(valueStrategy = IdGeneratorStrategy.IDENTITY) > > private Long slno; > > > �...@persistent > > private long column1; > > > �...@persistent > > private String column2; > > > �...@persistent > > private double column3; > > > �...@persistent > > private double column4; > > > �...@persistent > > private double column5; > > > �...@persistent > > private float column6; > > > �...@persistent > > private double column7; > > > �...@persistent > > private double column8; > > > �...@persistent > > private Date crDate; > > > �...@persistent > > private Date modDate; > > > �...@notpersistent > > private String message; > > > �...@notpersistent > > private int n; > > > �...@notpersistent > > private long offset; > > > �...@notpersistent > > private long range; > > > �...@notpersistent > > private List data; > > > public DetailsBean() { > > > } > > > public DetailsBean(long v1, String v2, double v3, double v4, double > > v5, > > float v6, > > double v7, double v8) { > > this.column1 = v1; > > this.column2 = v2; > > this.column3 = v3; > > this.column4 = v4; > > this.column5 = v5; > > this.column6 = v6; > > this.column7 = v7; > > this.column8 = v8; > > Date now = new Date(); > > this.crDate = now; > > this.modDate = now; > > } > > > public Long getSlno() { > > return slno; > > } > > > public void setSlno(Long slno) { > > this.slno = slno; > > } > > > public long getColumn1() { > > return column1; > > } > > > public void setColumn1(long column1) { > > this.column1 = column1; > > } > > > public String getColumn2() { > > return column2; > > } > > > public void setColumn2(String column2) { > > this.column2 = column2; > > } > > > public double getColumn3() { > > return column3; > > } > > > public void setColumn3(double column3) { > > this.column3 = column3; > > } > > > public double getColumn4() { > > return column4; > > } > > > public void setColumn4(double column4) { > > this.column4 = column4; > > } > > > public double getColumn5() { > > return column5; > > } > > > public void setColumn5(double column5) { > > this.column5 = column5; > > } > > > public float getColumn6() { > > return column6; > > } > > > public void setColumn6(float column6) { > > this.column6 = column6; > > } > > > public double getColumn7() { > > return column7; > > } > > > public void setColumn7(double column7) { > > this.column7 = column7; > > } > > > public double getColumn8() { > > return column8; > > } > > > public void setColumn8(double column8) { > > this.column8 = column8; > > } > > > public Date getCrDate() { > > return crDate; > > } > > > public void setCrDate(Date crDate) { > > this.crDate = crDate; > > } > > > public Date getModDate() { > > return modDate; > > } > > > public void setModDate(Date modDate) { > > this.modDate = modDate; > > } > > > public String getMessage() { > > return message; > > } > > > public void setMessage(String message) { > > this.message = message; > > } > > > public int getN() { > > return n; > > } > > > public void setN(int n) { > > this.n = n; > > } > > > public long getOffset() { > > return offset; > > } > > > public void setOffset(long offset) { > > this.offset = offset; > > } > > > public long getRange() { > > return range; > > } > > > public void setRange(long range) { > > this.range = range; > > } > > > public List getData() { > > return data; > > } > > > public void setData(List data) { > > this.data = data; > > } > > } --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Google App Engine for Java" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/google-appengine-java?hl=en -~----------~----~----~----~------~----~------~--~---
